我想找到所有不以句点结尾的注释行(.)。
我有这个表达式//[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)^//(?!.*\.$).*$