グループ内の試合の一部を除外することは可能かどうか疑問に思っています。
その/(foo((?:bar)|(bad)))/
結果、「foobar」または「foobad」と、「foobar」または「foobad」を含むグループ 1 が一致すると思います。「foobar」または「foobad」と一致させたいのですが、グループ 1 には「foo」または「foobad」しか含まれていません。(?:...)
後で参照できないグループを作成するために正規表現構文が使用されることは知っていますが、上記の使用法は 3 つのグループがあることを意味します。\2 'bar' または 'bad'; \NONE は未使用のグループ 'bar' です。\3 は「悪い」を表します。
私がここに行くところがわかりますか?必要に応じて、サブグループを別のグループから除外したいと考えています。
または、グループ 1 を OR 形式で 2 回定義したいと思い/(foobar)|(foobad)/
ますが、入力が思いどおりにならないことはわかっています。その場合、match[1]
入力として「foobad」を指定すると、アクセスしようとすると「未定義」エラーが発生します。これは、実際にグループ 1 またはグループ 2 に分割されているためです。
私はこれをjavascript正規表現方言で書いています。