匹配新行,为什么[。\ n] *在正则表达式中不起作用?

时间:2018-08-11 18:55:19

标签: regex

据我了解。匹配正则表达式中的几乎所有字符。然后,如果我想匹配包括换行符在内的任何字符,为什么[。\ n] *不起作用?

3 个答案:

答案 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)