如何匹配一个字符串与一个左括号{在C ++正则表达式

时间:2016-02-17 19:36:41

标签: c++ regex c++11

我在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 ++重写这些正则表达式吗?

1 个答案:

答案 0 :(得分:2)

请参阅basic_regex reference

  

默认情况下,正则表达式模式遵循ECMAScript syntax

ECMAScript syntax reference州:

  

<强>字符:   \ 字符
  说明字符
  匹配:字符字符不是在正则表达式中解释其特殊含义。   除了形成上述任何特殊字符序列的字符外,任何字符都可以被转义。    需要:^ $ \ . * + ? ( { {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; 原始字符串文字语法如何简化正则表达式声明。