20

任意の正規表現を (文字列として) 調べ、キャプチャ グループの数を返す正規表現が必要です。これまでのところ...

arbitrary_regex.toString().match(/\((|[^?].*?)\)/g).length

これは、疑問符で始まるグループがキャプチャされていないという前提がある場合に機能します。また、空のグループもカウントします。

文字クラスに含まれる括弧、エスケープされた括弧、およびその他のシナリオでは機能しません。

4

2 に答える 2

4

受け入れられた答えは、本番システムで使用する必要があるものです。ただし、楽しみのために正規表現を使用して解決したい場合は、以下に示すように実行できます。グループの数が必要な正規表現が正しいと想定しています。

(グループの数は、正規表現内の非リテラル の数にすぎないことに注意してください。私たちが取ろうとしている戦略は、すべての正しいものを一致させる代わりに、それらの間のすべての間違ったもの(分割することです.

re.toString().split(/(\(\?|\\\[|\[(?:\\\]|.)*?\]|\\\(|[^(])+/g).length - 1

www.debuggex.comでどのように機能するかを確認できます。

于 2013-04-16T21:14:18.723 に答える