【发布时间】:2015-04-06 17:28:22
【问题描述】:
我试图在 C++11 (Visual Studio 2013) 中使用std::regex_replace,但我试图创建的正则表达式抛出异常:
Microsoft C++ exception: std::regex_error at memory location 0x0030ED34
为什么会这样?这是我的定义:
std::string regexStr = R"(\([A - Za - z] | [0 - 9])[0 - 9]{2})";
std::regex rg(regexStr); <-- This is where the exception thrown
line = std::regex_replace(line, rg, this->protyp->getUTF8Character("$&"));
我想要做的:在一个字符串中查找所有符合以下格式的匹配项:
"\X99" 或 "\999" 其中 X = A-Z 或 a-z 且 9 = 0-9。
我也尝试使用 boost 正则表达式库,但它也会引发异常。
(另一个问题:我可以像最后一行那样使用反向引用吗?我想根据匹配动态替换)
感谢您的帮助
【问题讨论】:
-
为什么在字符类中
-周围有空格? -
你的正则表达式的问题是括号不平衡。左括号之一被转义,因此它与右括号不匹配。
-
@puelo
\\[A-Za-z\d]\d{2}\b