有人可以向我解释占有量词吗? (常用表达)

时间:2009-07-13 01:58:09

标签: regex pcre

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

PCRE man page使用该术语而不定义它时,Friedl's book似乎在作弊。该手册页明确指出术语占有量词首先在{{3}}中定义。嗯,这很好,但是我没有Friedl的书,在阅读手册页之间,我无法弄清楚占有量词与贪婪词的区别。

  • ? =零或一,贪心
  • ? =零或一,懒惰
  • ?+ = 0或1,占有
  • '+'=一个或多个,贪心
  • +? =一个或多个,懒惰
  • ++ =一个或多个,占有欲

1 个答案:

答案 0 :(得分:12)

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

  

讨论重复时   我解释说,运营商或量词   贪婪和懒惰之间的区别   重复。贪婪和懒惰   确定正则表达式的顺序   引擎尝试可能的排列   正则表达式模式。贪心   量词将首先尝试重复   令牌尽可能多次,   并逐渐放弃比赛   引擎回溯找到一个整体   比赛。懒惰的量词将首先出现   重复令牌的次数为   要求,并逐步扩大   匹配作为引擎回溯通过   正则表达式找到整体匹配。


  

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