{N}
是固定次数的匹配,所以它不会像 *
、+
、?
那样有贪婪和非贪婪两种模式(因为那些量词的匹配次数是可变的)。
我们通常不会说 {N}
是贪婪的,因为它没有选择匹配次数的余地。而像 {N,}
或 {N,M}
这样的量词则具有贪婪性(以及非贪婪版本,通过加?
)
* *? *+
? ?? ?+
+ +? ++
{M,} {M,}? {M,}+
{M,N} {M,N}? {M,N}+
{N} {N}? {N}+
非贪婪匹配时的{M,}?和{M,N}?,它们是等价的,因为最多只匹配M次
在perl中不支持{,N}的模式,所以也没有对应的非贪婪和占有优先匹配模式
关于{N}这个量词,由于是精确匹配N次,所以贪婪与否对最终结果无关紧要,但是却影响匹配时的行为:贪婪匹配最长,需要回溯,非贪婪匹配最短,不回溯,占有优先匹配最长不回溯