Regex 懒惰?正则表达式
有人能举例说明下列正则表达式之间的区别吗Regex 懒惰?正则表达式,regex,Regex,有人能举例说明下列正则表达式之间的区别吗 /b\w+?/g 及 基于regexr for Lazy?的文档:使前面的量词变懒,使其匹配尽可能少的字符。默认情况下,量词是贪婪的,将匹配尽可能多的字符。两个正则表达式将匹配相同的内容(一个“字母数字”字符)。只有当正则表达式变得更复杂时,它们之间的差异才会变得明显 比如说, \b\w\. 将匹配“A.”,但不匹配“Mr.”,因为\w只匹配一个字符 \b\w+?\. 两者都匹配。这与懒惰无关,但与第一个正则表达式中缺少量词有关。但是如果你比较一下
/b\w+?/g
及
基于regexr for Lazy?的文档:使前面的量词变懒,使其匹配尽可能少的字符。默认情况下,量词是贪婪的,将匹配尽可能多的字符。两个正则表达式将匹配相同的内容(一个“字母数字”字符)。只有当正则表达式变得更复杂时,它们之间的差异才会变得明显 比如说,
\b\w\.
将匹配“A.”
,但不匹配“Mr.”
,因为\w
只匹配一个字符
\b\w+?\.
两者都匹配。这与懒惰无关,但与第一个正则表达式中缺少量词有关。但是如果你比较一下
\b\w+\d
及
您会注意到一个重要的区别:两个正则表达式将以不同的方式匹配字符串“R2D2”
,第一个正则表达式匹配“R2D2”
,第二个正则表达式只匹配“R2”
,因为?
告诉\w+
标记匹配尽可能少的字符,所以它在R
之后停止匹配(即使它可以匹配更多。只有在正则表达式不匹配的情况下,它才会匹配更多)
\b\w+\d
\b\w+?\d