据我了解。匹配正则表达式中的几乎所有字符。然后,如果我想匹配包括换行符在内的任何字符,为什么[。\ n] *不起作用?
答案 0 :(得分:1)
使用[.\n]*
表示character class,它将与一个点或换行符匹配零次或多次。
在字符类the dot之外具有不同的含义。您可以使用modifier (?s)
或在语言或工具选项中指定以使点与换行符匹配。
答案 1 :(得分:1)
大多数正则表达式方言将.
定义为除换行符之外的任何字符 ,这是因为实现通常一次检查一行(例如,grep
),或者这很有意义与现有工具(许多现代编程语言等)兼容。
Perl和许多重新实现或模仿其“现代”正则表达式样式的语言都具有DOTALL选项,该选项可以更改语义,以便.
也与换行符匹配。
如果您没有该选项,请尝试(.|\n)*
,但这仍然很大程度上取决于您所使用的正则表达式工具。它也可能无法识别换行符的转义码\n
。
答案 2 :(得分:0)
您宁愿使用
.*\n -- this one if line can be empty
或
.+\n -- this one if line must include at least 1 character other that new line
您还应该记住,有时换行符的格式可以为\r\n
(主要是Windows)