Beat: Regulärer Ausdruck

Beitrag lesen

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;

$text =~ s/$pat/$ersatz/g;
reicht vollkommen. Pre und Postmatch sind nicht notwendig.

print "Text-neu: $text<br>";     # <=== Text-neu: aaaaaa123456bbbbbb
print "$` $'<br>";           # <=== aaa bbb


>   
>   
> Das heißt $` und $' sind richtig gefüllt.  
  
Doch sie sind. Aber die Verdoppelung geschieht durch eine unnötige Anwendung.  
  
  
Teste mal diesen string  
my $text = "-----123XYZXYZXYZXYZXYZ123-----";  
  
Dann siehst du besser, was geschieht.  
  
mfg Beat

-- 
Woran ich arbeite:  
[X-Torah](http://www.elcappuccino.ch/cgi/tok.pl?extern=1-pub-com3306-1)  
   <°)))o><                      ><o(((°>o