Am Dienstag, 22. Februar 2005 22:22 schrieb Thomas Schmidt:
So weit, so gut. Nur soll jetzt noch aus jedem ABC in dem String ein DEF gemacht werden. Wie geht das?
Das geht über "Captures" oder "Backreferences". Die gibt es auch im Go-Spiel :-) aber eben auch bei regulären Ausdrücken. In den meisten (perl-kombatiblen) Implentierungen umklammerst du einfach nochmal den gesuchten Ausdruck und kannst hinterher darauf zugreifen.
In deinem Beispiel also: (X(.*)X) Abfrage in Perl: $1 Abfrage in Python: m.group(1) bzw. \1 Abfrage in PHP: \1 Abfrage mit Qt: m.cap() bzw. \1
Je nach Interpreter muß der Backslash noch durch sich selbst gequotet werden. Die m.foo()-Methoden sind objektorientierte Zugriffe auf die Captures, bei PHP wird es direkt über die Match-Funktion gemacht, bei Perl zerhaut es dir vorherige Ausdrücke. (Aber auch da gibt's vermutlich einen Trick.)
Josef