Decodificando una expresión regular con repeticiones anidadas

PHP Hard regex

Tarea «Decodificando una expresión regular con repeticiones anidadas»

Dada una cadena que contiene una expresión regular codificada en un formato especial: letras del alfabeto latino (a-z) y dígitos (2-9) entre paréntesis, que indican el número de repeticiones del carácter o grupo anterior. Se permiten paréntesis anidados. Es necesario expandir todas las repeticiones y generar la expresión regular resultante en notación estándar (sin paréntesis con número, solo caracteres y cuantificadores {n}). Por ejemplo, 'a3' se convierte en 'a{3}', '(ab)2' -> '(ab){2}', y '((a2)2b)2' -> '((a{2}){2}b){2}'. Está garantizado que la cadena de entrada es válida, la longitud no supera los 1000 caracteres y la profundidad de anidamiento no es mayor a 10.

Formato de entrada

La única cadena S (1 ≤ |S| ≤ 1000), compuesta por letras minúsculas del alfabeto latino, dígitos del 2 al 9 y paréntesis.

Formato de salida

Una línea — una expresión regular expandida en notación estándar.

Ejemplos

Ejemplo 1

ENTRADA
a3
SALIDA
a{3}

Ejemplo 2

ENTRADA
0 0 4 0 0 3
SALIDA
{4} {3}

Ejemplo 3

ENTRADA
0
SALIDA

Ejemplo 4

ENTRADA
(ab)2
SALIDA
(ab){2}

Ejemplo 5

ENTRADA
1 1 4 5 7 1
SALIDA
{4} {5} {7}
main.php