std::regex_error在内存位置



我有一个正则表达式:

std::regex regexp(
R"($ part, model.*[nr]([-]?[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.

根据regex规范,转义空格(不是特殊字符)的效果是未定义的:

9.4.2 ERE普通字符

…以未转义的<反斜杠>()是未定义的,除非在括号表达式的上下文中…

显然在MSVC实现中,std::regex_error被抛出。

修复转义后的regex编译。

try {
std::regex regexp(
R"($ part, model.*[nr]([-]?[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;
}

最新更新