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