16

アトミックグループ化を使用して(または他の方法で)所有格の数量詞をエミュレートすることは可能ですか(.NETはそれをサポートしていません)?

ノート。(x+x+)++yこれはで置き換えることができることがわかりましたが、これは単なる例であり、常にに等しい(?>(x+x+)+)yかどうかはわかりません(ここで、は数量詞です)。{something}@+(?>{something}@)@

4

2 に答える 2

28

うん。マスター自身、ジェフリー・フリードルを、彼の古典的なマスタリング・レギュラー・エクスプレッションズ(第3版)の142ページから引用できますか?

「ある意味では、所有格の数量詞は、アトミックグループ化で模倣できるため、単なる構文糖衣です。スマートな実装では、アトミックグループ化よりも所有格の数量詞を最適化できますが、.++とまったく同じ結果になります。」(?>.+)

于 2011-04-05T00:01:51.347 に答える
8

いいえ、それだけです。所有量指定子は、アトミック グループの便利な省略形です。

ここで、アトミック グループもサポートしないフレーバー (JavaScript や Python など) を使用している場合は、先読みを使用して同じ効果を得ることができます。

(?=((x+x+)+))\1y

先読みは、一致するものを消費しないことを除いて、アトミック グループと同じように機能します。したがって、そのコンテンツをキャプチャ グループでラップし、後方参照を使用して消費します。

于 2011-04-04T23:46:16.377 に答える