Laut Theorie kann man mit regulären Ausdrücken bekanntlich keine beliebig tiefen Klammerstrukturen analysieren. Mit einem modernen RegEx-Parser geht das trotzdem:
\(
(?>
[^()]+
| \( (?<number>)
| \) (?<-number>)
)*
(?(number)(?!))
\)
Das liefert zumindest die größten balancierten Klammerausdrücke in einem Text.
Also aus “blabla () + (3*(5+3)*4) blah” werden die beiden Matches “()” und “(3*(5+3)*4)” gefunden.
Die Folge ist, dass ein RegEx-Parser echt mächtiger ist als ein regulärer Ausdruck.
Tags: Theoretische


