我正在清理另一个人的正则表达式,他们目前以
结束所有他们的正则表达式.*$
那么以下内容是否完全相同?
.*
答案 0 :(得分:9)
.*
会尽可能匹配,但默认情况下.
与新行不匹配。如果您要匹配的文字有换行符并且您处于MULTILINE但不是 DOTALL模式,那么.*$
可能与.*
所处的位置不匹配。没有换行符(或者如果你不在MULTILINE中)或者如果你设置了DOTALL,那么它们是相同的,因为*
是一个贪婪的运算符并且会尽可能多地匹配。
最后,确切的答案取决于正则表达式引擎。所以你的结果可能会有所不同。
答案 1 :(得分:2)
并非总是如此,它取决于正在使用的设置,大多数正则表达式引擎都具有“多行”模式,如果启用它们,它们的行为会有所不同。
答案 2 :(得分:1)
$
断言匹配到达字符串的末尾,这将始终发生,因为.
匹配任何内容。所以,是的,它们是一样的。
然而,正如Paul Creasey指出的那样,有时他们不一样。启用多行后,$
将匹配多行字符串的结尾。但是,除非启用了dot-all(意为“dot”匹配all),否则.
无法匹配换行符。