Regex, aby policzyć liczbę przechwytywanych grup w wyrażeniu regularnym
Potrzebuję wyrażenia regularnego, które analizuje dowolne wyrażenie regularne (jako łańcuch), zwracając liczbę grup przechwytujących. Do tej pory mam ...
arbitrary_regex.toString().match(/\((|[^?].*?)\)/g).length
Który działa w niektórych przypadkach, gdzie założenie, że każda grupa, która zaczyna się znakiem zapytania, nie przechwytuje. Zlicza także puste grupy.
Nie działa w przypadku nawiasów zawartych w klasach znaków lub w nawiasach klamrowych i prawdopodobnie w innych scenariuszach.