正则表达式不匹配新行

Tal*_*Kit 2 regex emacs

下面的正则表达式应仅匹配不以#字符开头的行,后跟任何字符。

^[^#].*
Run Code Online (Sandbox Code Playgroud)

但是,如果缓冲区之前包含空行,则即使它以#开头,它也会与下一行匹配。

对于以下输入,它将失败

This line is matched as expected

# this line should not be matched, but it does if the above line is empty !?
Run Code Online (Sandbox Code Playgroud)

Ibr*_*jar 5

您可以这样解决:

^[^#\r\n].*
Run Code Online (Sandbox Code Playgroud)

您原始表达式的问题^[^#].*在于[^#]匹配换行符(空行),从而允许点.匹配空行之后的整行,因此该点实际上与换行符不匹配,即[^#]是一个做。

Regex101演示