我想找到所有不以句点结尾的注释行(.)
。
我有这个表达式//[A-Za-z0-9-\(\)\.,\-\\/ !\:_"]
,但我不知道如何让它只检测 EOL 之前没有 periond 的行(.)
。
我正在使用 C++,所以注释以//
. 例如,我希望匹配此字符串:
// 我的评论在这里
但不是这个:
// 我的评论在这里。
任何人都可以帮忙吗?
我想找到所有不以句点结尾的注释行(.)
。
我有这个表达式//[A-Za-z0-9-\(\)\.,\-\\/ !\:_"]
,但我不知道如何让它只检测 EOL 之前没有 periond 的行(.)
。
我正在使用 C++,所以注释以//
. 例如,我希望匹配此字符串:
// 我的评论在这里
但不是这个:
// 我的评论在这里。
任何人都可以帮忙吗?
不需要消极的后视或前瞻,保持简单:
^\/\/(.*[^.])$
\ /
\ /
\/
`-- 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
这种基于负后瞻的正则表达式应该适合您:
(?m)^//.*$(?<!\.)
或基于负前瞻:
(?m)^//(?!.*\.$).*$