如何在C ++正则表达式的第一场比赛中停止?

时间:2014-04-12 14:13:56

标签: c++ regex c++11 flex-lexer

我试图用flex删除C ++中的注释。

这是我的示例代码:

cout << "Pulapka \" \
       // ma \
       /* ma */ \
       " << endl;
cout << /*Proba*/"Zabawa \" // ala i kot " << endl; 

我希望匹配&#34; &#34 ;.

我的法律表达:

(\"[^[]*]*")

我想在第二个引号后停止匹配。这意味着我只需要这个片段:

"Pulapka \" \
      // ma \
      /* ma */ \
      "

1 个答案:

答案 0 :(得分:2)

以下正则表达式适用于我:

(\".*?(?<!\\)("))

然后,您可以提取出您想要的第一组。

注意:我不知道C ++是如何工作的,但我不得不使用s标志

演示:http://regex101.com/r/xL4kU8