アトミックグループ化を使用して(または他の方法で)所有格の数量詞をエミュレートすることは可能ですか(.NETはそれをサポートしていません)?
ノート。(x+x+)++y
これはで置き換えることができることがわかりましたが、これは単なる例であり、常にに等しい(?>(x+x+)+)y
かどうかはわかりません(ここで、は数量詞です)。{something}@+
(?>{something}@)
@
アトミックグループ化を使用して(または他の方法で)所有格の数量詞をエミュレートすることは可能ですか(.NETはそれをサポートしていません)?
ノート。(x+x+)++y
これはで置き換えることができることがわかりましたが、これは単なる例であり、常にに等しい(?>(x+x+)+)y
かどうかはわかりません(ここで、は数量詞です)。{something}@+
(?>{something}@)
@
うん。マスター自身、ジェフリー・フリードルを、彼の古典的なマスタリング・レギュラー・エクスプレッションズ(第3版)の142ページから引用できますか?
「ある意味では、所有格の数量詞は、アトミックグループ化で模倣できるため、単なる構文糖衣です。スマートな実装では、アトミックグループ化よりも所有格の数量詞を最適化できますが、
.++
とまったく同じ結果になります。」(?>.+)
いいえ、それだけです。所有量指定子は、アトミック グループの便利な省略形です。
ここで、アトミック グループもサポートしないフレーバー (JavaScript や Python など) を使用している場合は、先読みを使用して同じ効果を得ることができます。
(?=((x+x+)+))\1y
先読みは、一致するものを消費しないことを除いて、アトミック グループと同じように機能します。したがって、そのコンテンツをキャプチャ グループでラップし、後方参照を使用して消費します。