【发布时间】:2018-12-20 20:53:21
【问题描述】:
在过去的两个小时里,我试图理解为什么下面的代码行
std::regex matchPattern{R"(?<=\@)(.*?)(?=\=)"};
抛出 Microsoft C++ 异常:std::regex_error at memory location ....
我已经使用在线工具和 notepad++ 测试了正则表达式,一切正常。当我尝试在我的 c++ 应用程序中使用它时,我在初始化时从上面收到运行时错误。 我正在使用 c++14
提前感谢您的帮助。
【问题讨论】:
-
我试过这个并没有收到任何错误。如果发布了minimal reproducible example,则可能会复制错误。
-
它是否适用于
std::regex matchPattern("^[^@[]*");?请注意,您不需要在字符类中转义[。 -
对不起,伙计们。错误地我添加了错误的正则表达式......(我想我有点累了:))。我在最初的问题中更新了正则表达式
-
C++ std::regex 不支持lookbehind。可能您想要
R"(@([^=]+))"并获取 Group 1 值。请分享您的代码。见this C++ demo。