首页 > 正则表达式 懒惰型 {n,}? 和 {n} 有什么区别吗

正则表达式 懒惰型 {n,}? 和 {n} 有什么区别吗

看书的时候,看到特意提了一下 懒惰型的表达式 {n,}? 可是这个式子不是和 {n}一样吗

还是有些情况我木想到

谢谢大家


{n} Exactly n of the preceding element. (只能匹配连续n个字符)

e.g.
a{2},会匹配aa

{n,} n or more of the preceding element.(可以匹配n,或任意大于n个连续字符。贪婪匹配,会尽量匹配多的字符)

e.g
a{2,},会匹配aa, aaa,aa... 等等

{m,n} Between m and n of the preceding element.(可以匹配n到m个连续字符,贪婪匹配,连续n个字符比连续m个字符优先匹配)

e.g
a{2,4} 只会匹配aa,aaa,aaaa三种情况

http://regexpal.com/ 测试{n,}的情况,属于贪婪型匹配,黄色和蓝色为匹配的字符串:

另外一种有情况 {n,}?这个正则表达式,则属于懒惰型匹配,因为有了通配符‘?’。(也就是匹配尽量少的字符,参见@minus回复)
e.g

但是这个{n,}? 和{n}还是有区别的。举例如下:
正则表达式a{2,}?bb 会优先完整匹配 aaabb

而正则表达式a{2}bb不能够完整匹配 aaabb,只能匹配后四个字符

//参见@minus 和 @liushishi的回复和评论


@早起鸟 解释很清楚了!通俗的说就是:

{n,}? 匹配至少 n 个字符,而且越少越好. 其实结果与{n}是没差别的。

【热门文章】
【热门文章】