PHP用于正则表达式的PCRE引擎支持 “possessive quantifiers”
:
Quantifiers followed by +
are “possessive”. They eat as many characters as possible and don’t return to match the rest of the pattern. Thus .*abc
matches "aabc"
but .*+abc
doesn’t because .*+
eats the whole string. Possessive quantifiers can be used to speed up processing.
和:
If the 07001 option is set (an option which is not available in Perl) then the quantifiers are not greedy by default, but individual ones can be made greedy by following them with a question mark. In other words, it inverts the default behaviour.
不同之处在于:
/[0-9]+/ - one or more digits; greediness defined by the PCRE_UNGREEDY option
/[0-9]+?/ - one or more digits, but as few as possible (non-greedy)
/[0-9]++/ - one or more digits, but as many as possible (greedy, default)
This snippet
在贪婪默认模式下可视化差异.请注意,第一个片段在功能上与最后一个片段相同,因为默认情况下已经应用了(在某种意义上)附加片段.
This snippet
在应用PCRE_UNGREEDY(默认为默认模式)时可视化差异.查看默认值是如何反转的.