正则表达式:匹配取反 'comment' 字符前后的一组任意空格

regex: match on negating a set of abitrary whitespaces before and after a 'comment' character

我正在寻找一个正则表达式来(不)匹配由任意空格包裹的注释字符

例如以'#'作为注释字符:

应该匹配的行:

 code line here
   code line here

行应该匹配:

 #code line here
 # code line here
   #   code line here

所以,类似于集合的否定 (zero/*whitespaces # zero/*whitespaces)

 ^(\s#\s)

以下正则表达式将匹配没有字符“#”的行

^((?!^\s+#).)*$

可能有些东西没有优化,但试试这个:

^[^#]*(?!\s*#).

这将从行的开头获取所有未跟随 spaces + # 组合的符号。

对于您的示例数据,如果支持前瞻,您可以使用否定前瞻来断言从字符串的开头开始,右边的内容不是 0+ 次空白字符后跟 # .

如果是,则匹配整个字符串。

^(?!\s*#).+$

将匹配:

  • ^ 字符串开头
  • (?! 否定前瞻
    • \s*# 匹配 0+ 次空白字符,然后 #
  • ) 关闭前瞻
  • .+ 匹配除换行符以外的任何字符 1+ 次
  • $ 字符串结束

regex101 demo