5

同じ奇妙な結果を生成する 2 つの異なる言語 (javaScript と Flash) で次の正規表現があります。私が知りたいのは、それを修正する方法ではなく、なぜ動作が発生しているのかということです。

正規表現:

\[(\\{2}|\\\]|[^\]])*\]

ここでの目標は、括弧で囲まれた文字列を照合し、エスケープされた括弧で止まらないようにすることです。

テキスト入力があれば正しく一致しますが、[abcdefg]キャプチャ グループの一部として返されるのは だけです。式を に変更すると 、必要な結果が得られます。gabcdefg\[((?:\\{2}|\\\]|[^\]])*)\]

では、なぜこれが起こっているのですか?これは他の言語でも一貫していますか?

注:式を単純化\[([^\]])*\]すると、同じ問題が発生します。

4

2 に答える 2

2

*次のように、キャプチャ グループ内に量指定子を含めてみてください。

\[((?:\\{2}|\\\]|[^\]])*)\]
于 2013-06-30T18:46:42.093 に答える