同じ奇妙な結果を生成する 2 つの異なる言語 (javaScript と Flash) で次の正規表現があります。私が知りたいのは、それを修正する方法ではなく、なぜ動作が発生しているのかということです。
正規表現:
\[(\\{2}|\\\]|[^\]])*\]
ここでの目標は、括弧で囲まれた文字列を照合し、エスケープされた括弧で止まらないようにすることです。
テキスト入力があれば正しく一致しますが、[abcdefg]
キャプチャ グループの一部として返されるのは だけです。式を に変更すると
、必要な結果が得られます。g
abcdefg
\[((?:\\{2}|\\\]|[^\]])*)\]
では、なぜこれが起こっているのですか?これは他の言語でも一貫していますか?
注:式を単純化\[([^\]])*\]
すると、同じ問題が発生します。