量词:量即为数量,意为多少次,由 * + ? {n}组合表示?
Greedy 数量词?
? X? ? X,一次或一次也没有?
? X* ? X,零次或多次?
? X+ ? X,一次或多次?
? X{n}? X,恰好 n 次?
? X{n,} ? X,至少 n 次?
? X{n,m}? X,至少 n 次,但是不超过 m 次?
Reluctant 数量词?
X?? ? X,一次或一次也没有?
X*? ? X,零次或多次?
X+? ? X,一次或多次?
X{n}? ? X,恰好 n 次?
X{n,}? ? X,至少 n 次?
X{n,m}? ? X,至少 n 次,但是不超过 m 次?
Possessive 数量词?
X?+ ? X,一次或一次也没有?
X*+ ? X,零次或多次?
X++ ? X,一次或多次?
X{n}+ ? X,恰好 n 次?
X{n,}+ ? X,至少 n 次?
X{n,m}+ ? X,至少 n 次,但是不超过 m 次
?Greedy,Reluctant,Possessive的区别在于:(注意仅限于进行.等模糊处理时)
?greedy ['gri:di]量词被看作“贪婪的”,因为它第一次就读入整个被模糊匹配的字符串。如果第一个匹配尝试(整个输入字符串)失败,匹配器就会在被匹配字符串中的最后一位后退一个字符并且再次尝试,重复这个过程,直到找到匹配或者没有更多剩下的字符可以后退为止。根据表达式中使用的量词,它最后试图匹配的内容是1 个或者0个字符。
?但是,reluctant [ri'l?kt?nt]量词采取相反的方式:它们从被匹配字符串的开头开始,然后逐步地一次读取一个字符搜索匹配。它们最后试图匹配的内容是整个输入字符串。?
?最后,possessive [p?‘zesiv]量词和greedy一样也是尽可能多的匹配,但和greedy量词不同,possessive匹配上了就不吐了,从不后退(不回溯)。?
?Eg:? 字符串: aaabbbbbbbbbbbwac,使用b*+(bb)查找,找不到匹配,因为不可回溯。因为b*+匹配尽可能多的b字符,于是把全部b都匹配上了,当遇到w时,b*+的匹配结束,开始匹配(bb),但与w不匹配,但其被b*+匹配的内容却又不回溯,不后退,于是整个匹配结束,结果未匹配成功。?possesive?性能高些。