Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 懒惰?正则表达式_Regex - Fatal编程技术网

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