Ciao!

Stai affrontando un problema classico dei corsi di "linguaggi e traduttori".

Si tratta di un problema ricorsivo, come hai osservato tu stesso, che credo vada oltre la potenza espressiva delle espressioni regolari.

Per risolvere questo problema in maniera tradizionale è opportuno

1) scaricare le librerie opportune per il linguaggio scelto

C: Lex & yacc o flex e byson

Java: jflex e cup

2) definire una semplice grammatica

O meglio, trattandosi di un problema classico, cercare una soluzione in giro.

3) incartare quanto sviluppato in un'unica funzione.

Spero di essere stato utile.

A presto.