Regular Expressions
所有数量
サーチ…
備考
所持量の基本的な使用
Possessive量子は、与えられたトークンに対してバックトラックを有効に無効にすることを可能にする、多くの正規表現フレーバの中の別のクラスの量指定子です。これにより、特定のケースでのパフォーマンスの向上と一致の防止に役立ちます。
所有量限定子のクラスは、以下に示すように、量限定子の後に+
追加することによって、遅延型または欲張り型の量限定器と区別することができます。
数量化 | 貪欲 | レイジー | 所有者 |
---|---|---|---|
ゼロ以上 | * | *? | *+ |
1つ以上 | + | +? | ++ |
0または1 | ? | ?? | ?+ |
たとえば、 ".*"
と".*+"
という2つのパターンは、文字列"abc"d
で動作します。どちらの場合も、 "
文字列の最初は一致していますが、その後は2つのパターンが異なる動作と結果を持ちます。
貪欲な量指定子は、文字列abc"d
の残りの部分をスラップします。これはパターンと一致しないため、 d
バックトラックして削除し、 abc"
を含む量指定子を残します。これはまだパターンと一致しないので、量指定子は"
、 abc
のみを含むままにしてabc
ます。これはパターンと一致します( "
は"
量子ではなくリテラルとマッチします)。
所有量限定子は文字列の残りの部分をスラップしますが、欲張り量限定子とは異なり、それは戻ってこないでしょう。その内容、 abc"d
は一致のパターンの残りの部分を許可しないので、正規表現は停止し、一致する失敗を報告します。
所有量指定子はバックトラックを行わないため、長いパターンや複雑なパターンではパフォーマンスが大幅に向上する可能性があります。しかし、定量化がいかに正確に内部的に働くかを認識していなければ、(上記のように)危険である可能性があります。
Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow