正则表达式默认的情况下,会在满足匹配条件下尽可能的匹配更多内容。如 a.*b,用他来匹配 aabab ,它会匹配整个 aabab ,而不会只匹配到 aab 为止,这就是贪婪匹配。
与贪婪匹配对应的是,在满足匹配条件的情况下尽可能的匹配更少的内容,这就是懒惰匹配。
上述例子对应的懒惰匹配规则为:
a.*?b
如果用该表达式去匹配 aabab ,那么就会得到 aab 和 ab 这样两个匹配结果。
常用的懒惰限定符如下:
懒惰限定符 | 说明 |
---|---|
*? | 重复任意次,但尽可能少重复 |
+? | 重复 1 次或更多次,但尽可能少重复 |
?? | 重复 0 次或 1 次,但尽可能少重复 |
{n,} | 重复 n 次以上,但尽可能少重复 |
重复 n 到 m 次,但尽可能少重复 |