Tach!
ich möchte innerhalb eines regulären Ausdrucks beliebige Zeichen in beliebiger Anzahl bis zur schliessenden geschweiften Klammer abgreifen.
Der Punkt (.) ...
... ist dann also ungünstig, denn er würde ja auch auf die schließende Klammer zutreffen.
Im Prinzip ja, und Regexen sind gierig, aber nur solange wie sie ein Ergebnis liefern können. Das Muster /(.*)}/ findet alles, auch solche Klammernzeichen, aber an der letzten Klammer macht es Halt, weil es trotz der Gierigkeit ja auch noch den Ausdruck zu erfüllen gilt. Mit U-Modifizierer ist schon an der ersten Klammer das Ergebnis erreicht. (Die Gruppierung braucht man nur, wenn man den Ausdruck ohne Klammer extrahieren will.)
Du willst also nicht "beliebige Zeichen", sondern "alle Zeichen außer '}', und das beliebig oft:
/[^}]*/
Das ist eine gängige Methode, um die Gierigkeit auf anderem Wege zu umgehen. Und man muss nicht gruppieren, wenn man den Teil exklusive der Klammer haben will.
Durch die Kombination ".*" bekomme ich also beliebige Zeichen in beliebiger Anzahl.
Eben, und dadurch rennst du auch über die Klammer hinweg.
Nö, nicht zwangsläufig.
dedlfix.