Algoritmo para crear n-ésimo nivel de patrones anidados en RegEx

Como se explica en¿Se pueden usar expresiones regulares para hacer coincidir patrones anidados?, no es posible crear expresiones regulares para que coincida con un patrón anidado arbitrario. Pero, ¿es posible crear un algoritmo que genere una expresión regular de n-ésimo nivel de "jerarquización"?

Básicamente, quiero reemplazartrim(whatever) conrtrim(ltrim(whatever))

Logré crear 3 niveles a mano (sintaxis javascript):

<code>level[1] = /\(([^()]*)\)/g
level[2] = /\(((?:[^()]*\([^()]*\))*[^()]*)\)/g
level[3] = /\(((?:(?:(?:[^()]*\([^()]*\))*[^()]*)*\((?:(?:[^()]*\([^()]*\))*[^()]*)*\))*[^()]*)\)/g
</code>

Aquí hay algunos datos de prueba:

<code>1st(ddd) + 1st(ddd)
2nd(dd(d))
3rd(a(b) + (cd(h) + d(dfas) + zzz))
4th(a(b(c(d))))
8th(a(b(c(d(e(f(g()))))))
</code>

Sé que en todos los niveles[^()]* necesita ser reemplazado por un grupo no capturado que puede contener paréntesis, pero no estoy seguro de cómoGeneralizar el algoritmo para n-th nivel....

Respuestas a la pregunta(1)

Su respuesta a la pregunta