有人可以说明一下以下正则表达式有什么区别吗?
/b\w+?/g
和
/b\w/g
基于regexr for Lazy的文档?:使前面的量词变得懒惰,使其匹配尽可能少的字符。默认情况下,量词是贪婪的,并且将匹配尽可能多的字符。
两个正则表达式将匹配相同的内容(一个“字母数字”字符)。只有当正则表达式变得更复杂时,它们之间的差异才变得明显。
例如,
\b\w\.
将匹配,"A."
但不匹配,"Mr."
因为\w
仅匹配一个字符。
\b\w+?\.
将两者都匹配。这与懒惰无关,但与第一个正则表达式中缺少量词有关。但是如果你比较
\b\w+\d
和
\b\w+?\d
您会注意到一个重要的区别:两个正则表达式将以"R2D2"
不同的方式匹配字符串-第一个匹配"R2D2"
,第二个仅匹配,"R2"
因为?
Tell告诉\w+
令牌匹配的字符越少越好,因此它会在匹配结束后停止匹配R
(即使它可以更多匹配。只有在正则表达式不匹配时,它才会匹配更多)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句