看书的时候,看到特意提了一下 懒惰型的表达式 {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}
是没差别的。