两个正则表达式之间的差异

时间:2012-04-21 20:35:14

标签: regex

我有两个正则表达式:

«(\w+\.)+?»

«(\w+\.)+»

我认为第一个会尝试找到最小的模式,但是 对于下一个,我不知道。

有人有什么想法吗?

2 个答案:

答案 0 :(得分:4)

它被称为'贪婪'与'非贪婪',有一个很好的概述here

考虑更简单的事情:

.+?\s

如果文本是这句话,第一个例子将匹配“If”,因为“?”修饰符让它寻找最小可能的匹配。

.+\s

如果第二个例子匹配了这个句子,那么整个句子将被返回(直到。),因为它是最大的匹配。

答案 1 :(得分:1)

这是一个贪婪与非贪婪的正则表达式的例子。 (这里有java文档中介绍)

http://docs.oracle.com/javase/tutorial/essential/regex/quant.html