我想找到所有不以句号(.)
结尾的评论行。
我有这个表达式//[A-Za-z0-9-\(\)\.,\-\\/ !\:_"]
,但我不知道如何让它只检测在EOL之前没有被{per} (.)
的行。
我使用的是C ++,因此评论以//
开头。例如,我希望匹配此字符串:
//我的评论
但不是这一个:
//我的评论在这里。
任何人都可以提供帮助吗?
答案 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
答案 1 :(得分:2)
这种基于正面观察的负面正则表达式应该对你有用:
(?m)^//.*$(?<!\.)
或否定前瞻:
(?m)^//(?!.*\.$).*$