我有一个正则表达式为:
std::regex regexp(
R"(\$\ part,\ model.*[\n\r]([-]?[0-9]*\.?[0-9]+[Ee]?[-+]?[0-9]*),([-]?[0-9]*\.?[0-9]+[Ee]?[-+]?[0-9]*))",std::regex::extended);
代码可以编译,但是我收到以下错误:
Unhandled exception at 0x748F49C2 in regex.exe: Microsoft C++ exception: std::regex_error at memory location 0x00EFEE30.
根据正则表达式规范,转义空格(不是特殊字符)的效果是不确定的:
9.4.2 ERE普通字符
...
\
在方括号表达式的上下文中除外,对普通字符的解释是未定义的<backslash>(),但未定义。
显然,在MSVC实现中std::regex_error
会被抛出。
修复转义后,将编译正则表达式。
try {
std::regex regexp(
R"(\$ part, model.*[\n\r]([-]?[0-9]*\.?[0-9]+[Ee]?[-+]?[0-9]*),([-]?[0-9]*\.?[0-9]+[Ee]?[-+]?[0-9]*))", std::regex::extended);
}
catch (std::exception const& e) {
std::cerr << e.what() << std::endl;
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句