正则表达式 - 。* $与。*相同。*

时间:2010-12-28 22:03:45

标签: regex

我正在清理另一个人的正则表达式,他们目前以

结束所有他们的正则表达式
.*$

那么以下内容是否完全相同?

.*

3 个答案:

答案 0 :(得分:9)

.*会尽可能匹配,但默认情况下.与新行不匹配。如果您要匹配的文字有换行符并且您处于MULTILINE但不是 DOTALL模式,那么.*$可能与.*所处的位置不匹配。没有换行符(或者如果你不在MULTILINE中)或者如果你设置了DOTALL,那么它们是相同的,因为*是一个贪婪的运算符并且会尽可能多地匹配。

最后,确切的答案取决于正则表达式引擎。所以你的结果可能会有所不同。

答案 1 :(得分:2)

并非总是如此,它取决于正在使用的设置,大多数正则表达式引擎都具有“多行”模式,如果启用它们,它们的行为会有所不同。

答案 2 :(得分:1)

$断言匹配到达字符串的末尾,这将始终发生,因为.匹配任何内容。所以,是的,它们是一样的。

然而,正如Paul Creasey指出的那样,有时他们不一样。启用多行后,$将匹配多行字符串的结尾。但是,除非启用了dot-all(意为“dot”匹配all),否则.无法匹配换行符。