正则表达式匹配#Comment无法正常工作

时间:2014-07-24 03:09:48

标签: regex

我试图编写一个正则表达式来检测以下类型的注释:

  • 从一个#开始,一直持续到行尾
  • 将任何已转义的#\#)视为普通文本(因此,如果它已经不存在,则不会在其后发表任何评论)

使用this tool,我想出了以下正则表达式来实现这一目标:

(?!\\)(#(.*)\n)

在全局模式下使用它,我在以下输入文本上测试了它,这是非常不言自明的:

#This comment should be caught, and any embedded #s or escaped \#s should also be
While none of this line this should be \#\#\#

现在,该正则表达式的匹配是:

  • 整个第一行
  • 第二行的所有内容从第一行#开始,但不包括\之前

显然,这太过分了 - 应该抓住第二行的任何内容。我应该改变什么来让它按照我想要的方式工作?

1 个答案:

答案 0 :(得分:3)

使用此正则表达式:

(?<!\\)#.*

<强>解释

  • lookbehind (?<!\\)声称前面的内容不是反斜杠。
  • #匹配哈希
  • .*匹配到行尾

查看 Regex Demo

中的匹配项

<强>参考

相关问题