Gerd: Regulärer Ausdruck

Beitrag lesen

Hallo Patrick!

Möchte Dich nicht in Deiner Ruhe stören, erwarte eine mögliche Antwort daher erst ab Montag.

Es gibt die vordefinierten Variablen Prematch und Postmatch (Link hast Du in  Deinem Posting zu $#name erhalten). Die zu nutzen ist aber eine erhebliche Geschwindigkeitsbremse.

Trotz der Warnung habe ich es einmal damit versucht - und es funktioniert

fast!

  
my $times = 5;  
my $var = "XYZ";  
my $ersatz = "123456";  
my $pat = qr/(?<!$var)(?:$var){$times}(?!$var)/;  
my $text = "aaaXYZXYZXYZXYZXYZbbb";  
$text =~ s/$pat/$`$ersatz$'/g;  
print "Text-neu: $text<br>";     # <=== Text-neu: aaaaaa123456bbbbbb  
print "*$`* *$'*<br>";           # <=== *aaa* *bbb*  

Das heißt $` und $' sind richtig gefüllt.
Warum aber erscheint deren Inhalt in der Ersetzung doppelt?

Vermutlich mein letzter Beitrag für heute!
Gruß
Gerd