从我的理解来看。匹配正则表达式中的几乎所有字符。那么如果我想匹配任何字符,包括新行,为什么 [.\n]* 不起作用?
大多数正则表达式方言定义为除换行符之外的.
任何字符,要么是因为实现通常一次检查一行(例如),要么因为这对于与现有工具(许多现代编程语言等)的兼容性有意义。grep
Perl 和许多重新实现或模仿其“现代”正则表达式风格的语言都有一个选项 DOTALL,它可以更改语义,以便.
也匹配换行符。
如果您没有该选项,请尝试(.|\n)*
,但这仍然在很大程度上取决于您使用的正则表达式工具;\n
它也可能无法识别换行符的转义码。
你应该使用
.*\n -- this one if line can be empty
Run Code Online (Sandbox Code Playgroud)
或者
.+\n -- this one if line must include at least 1 character other that new line
Run Code Online (Sandbox Code Playgroud)
你还应该记住,有时换行符的格式可以是\r\n
(主要是Windows)