首页 新闻 会员 周边 捐助

perl正则哪些量词有贪婪模式

0
[已关闭问题] 关闭于 2025-08-01 16:44

{N} 是固定次数的匹配,所以它不会像 *+? 那样有贪婪和非贪婪两种模式(因为那些量词的匹配次数是可变的)。
我们通常不会说 {N} 是贪婪的,因为它没有选择匹配次数的余地。而像 {N,}{N,M} 这样的量词则具有贪婪性(以及非贪婪版本,通过加?

_java_python的主页 _java_python | 小虾三级 | 园豆:984
提问于:2025-08-01 16:41
< >
分享
所有回答(1)
0

(量词后加上?) (量词后加上+)
贪婪匹配量词 非贪婪匹配量词 占有优先匹配量词

  *                    *?                         *+
  ?                    ??                         ?+
  +                    +?                         ++
  {M,}                 {M,}?                      {M,}+
  {M,N}                {M,N}?                     {M,N}+
  {N}                  {N}?                       {N}+

非贪婪匹配时的{M,}?和{M,N}?,它们是等价的,因为最多只匹配M次
在perl中不支持{,N}的模式,所以也没有对应的非贪婪和占有优先匹配模式
关于{N}这个量词,由于是精确匹配N次,所以贪婪与否对最终结果无关紧要,但是却影响匹配时的行为:贪婪匹配最长,需要回溯,非贪婪匹配最短,不回溯,占有优先匹配最长不回溯

_java_python | 园豆:984 (小虾三级) | 2025-08-01 16:44
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册