def count_patterns(regex):
    """
    >>> count_patterns('foo: \\d')
    0
    >>> count_patterns('foo: (\\d)')
    1
    >>> count_patterns('foo: (\\d(\\s))')
    1
    """
parsed = sre_parse.parse(regex)
return len([token for token in parsed if token[0] == 'subpattern'])
Узнать количество групп захвата в регулярных выражениях Python