16

我正在阅读 PCRE 文档,它指的是所有格量词,但没有明确或具体定义它们。我知道什么是贪心量词,我也知道什么是懒惰量词。但是占有欲?

PCRE 手册页使用该术语而不定义它时,它似乎在作弊。手册页特别指出,所有格量词一词最初是在Friedl 的书中定义的。好吧,那很好,但我没有弗里德尔的书,在阅读手册页时,我无法弄清楚所有格量词与贪婪量词的区别。

  • ? = 零或一,贪婪
  • ?? = 零或一,懒惰
  • ?+ = 零或一,所有格
  • '+' = 一个或多个,贪婪
  • +?= 一个或多个,懒惰的
  • ++ = 一个或多个,所有格
4

1 回答 1

14

也许最好的起点是Regex Tutorial - Possessive Quantifiers

在讨论重复运算符或量词时,我解释了贪婪重复和惰性重复之间的区别。贪婪和懒惰决定了正则表达式引擎尝试正则表达式模式的可能排列的顺序。贪婪的量词会首先尝试尽可能多地重复令牌,并随着引擎回溯以找到整体匹配时逐渐放弃匹配。惰性量词将首先根据需要重复标记几次,然后随着引擎通过正则表达式回溯以找到整体匹配,逐渐扩大匹配。


占有量词是一种防止正则表达式引擎尝试所有排列的方法。这主要用于性能原因。您还可以使用所有格量词来消除某些匹配项。

于 2009-07-13T02:01:01.237 回答