VS2013:当正则表达式包含\ 我编写了一个小型的C++程序来搜索和替换许多文件中的字符串;例如,要搜索: 0x6e }
这是我的正则表达式:VS2013:当正则表达式包含\ 我编写了一个小型的C++程序来搜索和替换许多文件中的字符串;例如,要搜索: 0x6e },c++,regex,c++11,stl,visual-studio-2013,C++,Regex,C++11,Stl,Visual Studio 2013,这是我的正则表达式: regex regex1("0x[a-fA-F0-9]{1,2}\s\}"); 它在上面的线路上崩溃了 正则表达式在使用Notepad++时工作 请告知如何处理}?您需要记住,\不仅是正则表达式的转义字符,也是字符串文本的转义字符。要在regexp中生成一个\字符作为转义字符,而不是字符串,您需要转义它:\。或者,如果编译器支持c++11,则可以使用原始字符串文本:R“(0x[a-fA-F0-9]{1,2}\s\})”转义\ 将正则表达式更改为以下将使其正常工作 rege
regex regex1("0x[a-fA-F0-9]{1,2}\s\}");
它在上面的线路上崩溃了
正则表达式在使用Notepad++时工作
请告知如何处理
}
?您需要记住,\
不仅是正则表达式的转义字符,也是字符串文本的转义字符。要在regexp中生成一个\
字符作为转义字符,而不是字符串,您需要转义它:\
。或者,如果编译器支持c++11,则可以使用原始字符串文本:R“(0x[a-fA-F0-9]{1,2}\s\})”
转义\
将正则表达式更改为以下将使其正常工作
regex regex1("0x[a-fA-F0-9]{1,2}\\s\\}");
// ^ ^ additional escaping
相同的字符,
,为\\
正则表达式提供所需的转义字符
考虑使用C++,在C++ 11中引入(无需转义)。像这样的事情应该会奏效
regex regex1(R"(0x[a-fA-F0-9]{1,2}\s\})");
C++生词字符串文字是形式; R“分隔符(原始字符*)分隔符”
其中分隔符是可选的,并且原始字符*
字符串不能包含终止序列)分隔符“