任意の正規表現を (文字列として) 調べ、キャプチャ グループの数を返す正規表現が必要です。これまでのところ...
arbitrary_regex.toString().match(/\((|[^?].*?)\)/g).length
これは、疑問符で始まるグループがキャプチャされていないという前提がある場合に機能します。また、空のグループもカウントします。
文字クラスに含まれる括弧、エスケープされた括弧、およびその他のシナリオでは機能しません。
任意の正規表現を (文字列として) 調べ、キャプチャ グループの数を返す正規表現が必要です。これまでのところ...
arbitrary_regex.toString().match(/\((|[^?].*?)\)/g).length
これは、疑問符で始まるグループがキャプチャされていないという前提がある場合に機能します。また、空のグループもカウントします。
文字クラスに含まれる括弧、エスケープされた括弧、およびその他のシナリオでは機能しません。
受け入れられた答えは、本番システムで使用する必要があるものです。ただし、楽しみのために正規表現を使用して解決したい場合は、以下に示すように実行できます。グループの数が必要な正規表現が正しいと想定しています。
(
グループの数は、正規表現内の非リテラル の数にすぎないことに注意してください。私たちが取ろうとしている戦略は、すべての正しいものを一致させる代わりに、それらの間のすべての間違ったもの(
を分割することです.
re.toString().split(/(\(\?|\\\[|\[(?:\\\]|.)*?\]|\\\(|[^(])+/g).length - 1
www.debuggex.comでどのように機能するかを確認できます。