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

相同的字符, \/Cube >,用作C++和正则表达式中的转义字符。单<代码> \/C>启动C++字符转义(编译器至少应该对无效的字符进行警告)。将解析double

\\
,为
正则表达式提供所需的转义字符

原始字符串文本

考虑使用C++,在C++ 11中引入(无需转义)。像这样的事情应该会奏效

regex regex1(R"(0x[a-fA-F0-9]{1,2}\s\})");

C++生词字符串文字是形式; R“分隔符(原始字符*)分隔符”

其中分隔符是可选的,并且
原始字符*
字符串不能包含终止序列
)分隔符“