我在C ++中编写正则表达式。我有2个正则表达式在java中工作正常。但是这些会引发错误,即
ldi r16,$0F
ldi r17,$3C
eor r16,r17
lsl r16
lsl r16
end: rjmp end
这些正则表达式如下:
one of * + was not preceded by a valid regular expression C++
有人可以帮我解决这个错误或者用C ++重写这些正则表达式吗?
答案 0 :(得分:2)
默认情况下,正则表达式模式遵循
ECMAScript syntax
。
<强>字符强>:
\
字符
说明:字符
匹配:字符字符不是在正则表达式中解释其特殊含义。 除了形成上述任何特殊字符序列的字符外,任何字符都可以被转义。 需要:^
$
\
.
*
+
?
(
{ {1}})
[
]
{
}
因此,您需要转义|
才能使代码正常工作:
{
请参阅IDEONE demo
另外,请注意std::string s("\r\n { \r\nSome text here");
regex r1(R"(^\s*\{\s*\n)");
regex r2(R"(^\s*\{\s*//.*\n)");
std::string newtext = std::regex_replace( s, r1, "" );
std::cout << newtext << std::endl;
原始字符串文字语法如何简化正则表达式声明。