当正则表达式中包含能接受重复的限定符(指定数量的代码,例如*,{5,12}等)时,通常的行为是(在使整个表达式能得到匹配的前提下)匹配尽可能多的字符。如对于一段文本
This is the first line.
This is the second line.
This is the third line.
用^[\w\W]+$ 匹配会得到整个文本段,由于Regex引擎是贪婪的,它会尽可能的匹配多的选项,知道匹配完。
有时,我们更需要懒惰匹配,也就是匹配尽可能少的字符。前面给出的限定符都可以被转化为懒惰匹配模式,只要在它后面加上一个问号?。如同样用上面一段文本,用^[\w\W]+?$模式进行匹配,匹配到第一个马上返回,不再继续进行查找,所以得到结果:
This is the first line.