RegEx:匹配所有不以句点结尾的评论

时间:2013-06-05 11:29:07

标签: regex regex-negation

我想找到所有不以句号(.)结尾的评论行。

我有这个表达式//[A-Za-z0-9-\(\)\.,\-\\/ !\:_"],但我不知道如何让它只检测在EOL之前没有被{per} (.)的行。

我使用的是C ++,因此评论以//开头。例如,我希望匹配此字符串:

  

//我的评论

但不是这一个:

  

//我的评论在这里。

任何人都可以提供帮助吗?

2 个答案:

答案 0 :(得分:3)

不需要负面的观察或前瞻,保持简单:

^\/\/(.*[^.])$
        \    /
         \  /
          \/
           `-- This is the key, match any non-period character at the end.

演示:http://rubular.com/r/JZb3RehqrR

正如anubhava在评论中指出的那样,上面的正则表达式并没有捕获空的注释行。如果您还希望捕获空注释行,可以添加?以使注释可选:

^\/\/(.*[^.])?$
             ^
             |
             `-- Added this in order to make the comment optional

演示:http://rubular.com/r/INyArTf9qQ

答案 1 :(得分:2)

这种基于正面观察的负面正则表达式应该对你有用:

(?m)^//.*$(?<!\.)

或否定前瞻:

(?m)^//(?!.*\.$).*$

现场演示:http://www.rubular.com/r/sUHNDokY2j