1

我想找到所有不以句点结尾的注释行(.)

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

我正在使用 C++,所以注释以//. 例如,我希望匹配此字符串:

// 我的评论在这里

但不是这个:

// 我的评论在这里。

任何人都可以帮忙吗?

4

2 回答 2

4

不需要消极的后视或前瞻,保持简单:

^\/\/(.*[^.])$
        \    /
         \  /
          \/
           `-- 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

于 2013-06-05T11:44:40.763 回答
2

这种基于负后瞻的正则表达式应该适合您:

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

或基于负前瞻:

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

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

于 2013-06-05T11:32:09.473 回答