Thread Inhalt zwischen 2 Ausdrücken entfernen (14 answers)
Opened by stb2050 at 2005-03-22 13:38

pKai
 2005-03-22 15:45
#52849 #52849
User since
2005-02-18
357 Artikel
BenutzerIn
[default_avatar]
[quote=esskar,22.Mar..2005, 12:44]
Code: (dl )
$var =~ s!($pattern).*($pattern)!$1$2!g;
[/quote]
Sollte nicht der Match samt Begrenzer beseitigt werden?
Also Eher
Code: (dl )
$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:
Code: (dl )
$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.

View full thread Inhalt zwischen 2 Ausdrücken entfernen