Salve a tutti!!

Chiedo scusa ai mod se ho sbagliato sezione, ma non sapevo dove altro postare

Vorrei realizzare una regexp che controlla la sintassi di un'espressione matematica (come dal titolo del resto )

Se si trattasse di una roba del tipo
codice:
2+5*(3^2-(3+5*2))
non avrei nessun problema (fermo restando che sono ancora a 0 con lo sviluppo ), ma ciò che voglio fare è leggermente più complesso: vorrei poter far "matchare" tutte le funzioni matematiche (seno, coseno, tangente, logaritmi, ...)

Stavo ragionando in questo senso: poichè qualsiasi espressione matematica può essere vista come somma (o prodotto o divisione o sottrazione) di espressioni semplici e/o funzioni, e a sua volta la funzione contiene un'espressione, mi trovo un pò in crisi perchè tutto è ricorsivo:
codice:
           Espressione <-----
           /         \       |
Esp. Semplice     Funzione---
ecco spero sia più chiaro con questo simil-schema (in pratica, design pattern Composite)

quindi, ipotizzando un controllo sull'espressione, mi risulterebbe che
codice:
Espressione=[0-9]|FUNZ(Espressione)
(dove funz non è altro che un insieme di tutte le possibili funzioni matematiche.

Qualcuno ha qualche idea??

Grazie in anticipo per le risposte