[quote=esskar,22.Mar..2005, 12:44]
$var =~ s!($pattern).*($pattern)!$1$2!g;
[/quote]
Sollte nicht der Match samt Begrenzer beseitigt werden?
Also Eher
$var =~ s!($pattern).*($pattern)!!; # zu /g siehe unten
[quote=esskar,22.Mar..2005, 12:46]das g am Ende brauchst du nur dann, wenn mehrere solcher <!--abc-->Das soll alles weg<!--abc--> Teilstücke in dem String vorkommen![/quote]
nö, da .* gierig ist, wird es sowieso nur 1mal passen.
Folgendes geht ebenfalls:
$var =~ s!($pattern).*(\1)!!;
Wobei ich zu Vor- und Nachteilen dieser Lösung nichts sagen kann.
Wenn die Match-Zeichenkette aus der Variablen RegExp-Metazeichen enthalten könnte (hier im Bsp. nicht der Fall), ist man auf der sicheren Seite, wenn man [perldoc=-f quotemeta]-f quotemeta[/perldoc](<- non-functional Link ;) ) verwendet oder das entsprechenden \Q\E escape.
Ausser man
will natürlich RexExpe übergeben.
I sense a soul in search of answers.