Thread Regexp: Ersetzungsausdruck mitbenutzen
(25 answers)
Opened by #Kein Kommentar at 2008-07-12 21:22
Hi,
[s]im Ersetzungsteil solltest Du $1 anstatt \1 benutzen.[/s] [s]edit: Musst natürlich drauf achten, dass es beim Zusammenbauen von $replace vor Interpolation geschützt ist; also wie bereits von Dir gemacht, einfache Hochkommata oder q~~ verwenden, oder mit 'nem Backslash maskieren.[/s] [s]$text =~ s/$find/$replace/ge;[/s] [s]Der Modifier /e sollte das sein, was Du brauchst.[/s] update: Hm, zu schnell aus der Hüfte geschossen. :o(( Will doch nicht so, wie ich mir das gedacht hatte.... update2: pq's Gedanke an quotemeta() gewürdigt, kommt meine parallel zu ihr entwickelte lösung auf folgendes: Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 my $string = "test test %ae, test %ue test, %oe"; my $find = "%(ae|oe|ue)"; my $replace = '#\1;'; # pq's Lorbeeren hinzugefuegt $replace = quotemeta $replace; $replace =~ s/\\\\(\d)/\$$1/g; # meine Beerchen ;) eval "\$string =~ s/$find/$replace/g;"; meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen! |