有人可以说明下列正则表达式之间有什么区别吗?
/b\w+?/g
和
/b\w/g
基于regexr for Lazy?的文档:使前面的量词变得懒惰,使其匹配尽可能少的字符。默认情况下,量词是贪婪的,并且将匹配尽可能多的字符。
答案 0 :(得分:1)
两个正则表达式都匹配相同的东西(一个“字母数字”字符)。只有当正则表达式变得更复杂时,它们之间的区别才会变得明显。
例如,
\b\w\.
将匹配"A."
但不匹配"Mr."
,因为\w
只匹配一个字符。
\b\w+?\.
将匹配两者。这与懒惰没有关系,但在第一个正则表达式中缺乏量词。但如果你比较
\b\w+\d
和
\b\w+?\d
你会发现一个重要的区别:两个正则表达式都会以不同的方式匹配字符串"R2D2"
- 第一个匹配"R2D2"
,第二个匹配"R2"
,因为?
}告诉\w+
令牌匹配尽可能少的字符,因此它会在R
之后停止匹配(即使可以匹配更多。只有在匹配时才会匹配更多正则表达式不会匹配否则)。