【问题标题】:Can someone explain Possessive Quantifiers to me? (Regular Expressions)有人可以向我解释所有格量词吗? (常用表达)
【发布时间】:2010-11-10 04:31:30
【问题描述】:

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

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

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

【问题讨论】:

标签: regex pcre


【解决方案1】:

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

在讨论重复时 运算符或量词,我解释了 贪婪和懒惰的区别 重复。贪婪和懒惰 确定正则表达式的顺序 引擎尝试可能的排列 的正则表达式模式。一个贪心的 量词将首先尝试重复 尽可能多次使用令牌, 并逐渐放弃比赛作为 引擎回溯以找到整体 匹配。一个惰性量词将首先 重复令牌的次数 需要,逐步扩大 匹配引擎回溯通过 正则表达式来查找整体匹配。


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

【讨论】:

  • 啊,我明白了!在阅读了那个教程之后,在我看来,懒惰并不是贪婪的反面。 Lazy 也许应该被称为“慷慨”,而所有格形式实际上应该被称为lazy,因为所有格量词拒绝回溯。他们不会做任何额外的工作,这真是太懒了。
  • 占有量词拒绝回溯——这是我读到的最好的解释。感谢您的总结:)
猜你喜欢
  • 1970-01-01
  • 2010-10-04
  • 1970-01-01
  • 2021-02-18
  • 1970-01-01
  • 2011-05-08
  • 2012-04-09
  • 2019-06-19
  • 2012-05-09
相关资源
最近更新 更多