Regex de Python: paréntesis anidados coincidentes [duplicado]

Esta pregunta ya tiene una respuesta aquí:

¿Se pueden usar expresiones regulares para unir patrones anidados? [duplicar 11 respuestas

supongo que tengo una cadena que contiene subcadenas

# the substrings and the whole string surrounded by parenthesis
string = '((substring1)(substring2))'


Quiero obtener la subcadena1 y la subcadena2 usando expresiones regulares, pero tengo un problema:

Esto es lo que tengo ahora:

match = re.search('(\(.*\))', string)
print match.groups()


El problema es que el resultado muestra:

('(substring1)(substring2)', )


Parece que la expresión regular coincide solo con el primer paréntesis de apertura y el último paréntesis de cierre ..

n otras palabras, la expresión regular coincidente es como ...

(    match.....    )

en lugar d

(    (match1)(match2)   )

¿Cómo hago que la expresión regular atrape el paréntesis interno?

Gracia