标准::regex抛出微软C++;异常:运行时内存位置出现std::regex_错误

标准::regex抛出微软C++;异常:运行时内存位置出现std::regex_错误,regex,c++11,Regex,C++11,在过去的两个小时里,我试图理解为什么下面的代码行 std::regex matchPattern{R"(?<=\@)(.*?)(?=\=)"}; std::regex matchPattern{R”(?C++14std::regex(其任何风格)不支持lookback构造 您可以使用R”(@([^=]+)”并获取组1值。请注意,R”(和)“是原始字符串文字边界,@([^=]+)是真正的字符串模式,它匹配@,然后匹配并捕获组1中除=以外的1+个字符 见: 我尝试了这个,但没有得到任何错误。

在过去的两个小时里,我试图理解为什么下面的代码行

std::regex matchPattern{R"(?<=\@)(.*?)(?=\=)"};

std::regex matchPattern{R”(?C++14
std::regex
(其任何风格)不支持lookback构造

您可以使用
R”(@([^=]+)”
并获取组1值。请注意,
R”(
)“
是原始字符串文字边界,
@([^=]+)
是真正的字符串模式,它匹配
@
,然后匹配并捕获组1中除
=
以外的1+个字符

见:


我尝试了这个,但没有得到任何错误。如果发布了,可能会复制错误。它是否与
std::regex matchPattern(“^[^@[]*”);
?注意,您不需要在字符类中转义
[
。抱歉,伙计们。我错误地添加了错误的regex…(我想我有点累了:)。我已经更新了初始问题中的正则表达式C++std::regex不支持查找。可能您想要
R“(@([^=]+)”
,并获取组1值。请共享您的代码。请参阅。签出此问题我使用“\\\”斜线技巧const std::regex regu off\u p”(\\+[0-9A-F]{2})解决了它;
#include <regex>
#include <string>
#include <iostream>
using namespace std;

int main() {
    std::regex matchPattern(R"(@([^=]+))");
    std::string s("@test=boundary");
    std::smatch matches;
    if (std::regex_search(s, matches, matchPattern)) {
        std::cout<<matches.str(1);
    }
    return 0;
}
test