如何在C++正则表达式中的第一个匹配处停止

How to stop at first match in C++ regular expression?

本文关键字:第一个 C++ 正则表达式      更新时间:2023-10-16

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

这是我的示例代码:

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

我想要匹配"之间的所有内容。

我的正则表达式:

("[^[]*]*")

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

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

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

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

然后,您可以提取第一组,这正是您想要的。

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

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