16

私はPCREドキュメントを読んでいます。所有格の数量詞について言及していますが、明示的または具体的に定義していません。私は貪欲な数量詞が何であるかを知っています、そして私は怠惰な数量詞が何であるかを知っています。しかし、所有格?

PCREのマニュアルページは、用語を定義せずに使用すると不正行為をしているようです。マニュアルページには、所有格数量詞という用語が最初にフリードルの本で定義されたと具体的に記載されています。それは素晴らしいことですが、私はフリードルの本を持っていません。manページを読んでいると、行の間で、所有格の数量詞と貪欲な数量詞の違いがわかりません。

  • ?=ゼロまたは1、貪欲
  • ?? =ゼロまたは1、怠惰
  • ?+ =ゼロまたは1、所有格
  • '+' = 1つ以上、貪欲
  • +?= 1つ以上、怠惰
  • ++ = 1つ以上、所有格
4

1 に答える 1

14

おそらく、開始するのに最適な場所はRegex Tutorial - Possessive Quantifiersです。

反復演算子または量指定子について説明したとき、貪欲な反復と怠惰な反復の違いについて説明しました。貪欲と怠惰は、正規表現エンジンが正規表現パターンの可能な順列を試みる順序を決定します。貪欲な量指定子は、最初にトークンをできるだけ多く繰り返そうとし、エンジンが全体的な一致を見つけるためにバックトラックするにつれて、徐々に一致をあきらめます。遅延量指定子は、最初にトークンを必要な回数だけ繰り返し、エンジンが正規表現をバックトラックして全体的な一致を見つけるにつれて、一致を徐々に拡張します。


所有量指定子は、正規表現エンジンがすべての順列を試行するのを防ぐ方法です。これは、主にパフォーマンス上の理由で役立ちます。所有量指定子を使用して、特定の一致を除外することもできます。

于 2009-07-13T02:01:01.237 に答える