Christian Kruse: Regular Expressions: Elegantere Lösung möglich?

Beitrag lesen

你好 Jörg,

Bislang behelfe ich mich mit einer while-Schleife. Das funktioniert auch,
aber es erscheint mir wenig elegant und auch zeitaufwändig:

while ($text =~ /<p class="txt4">.*?$suchbegriff.*?</p>/) {
$text =~ /<p class="txt4">(.*?)</p>/;
my $korr = $1;
$korr =~ s/$suchb/$ersatz/g;
$text =~ s/<p class="txt4">.*?$suchb.*?</p>/<p class="txt4">$korr</p>/;
}

Ich verstehe nicht so recht, was gegen

s!<p class="txt4">(.*?)$suchb(.*?)</p>!<p class="txt4">$1$korr$2</p>!g;

spricht. Test-Version:

  
#!/usr/bin/perl -w  
  
use strict;  
  
my $text = '<p class="h4">Dies ist ein Test</p> Dies ist ein Test <p>Dies ist ein Test <p class="h4">Dies ist ein Test</p> Dies ist ein Test</p>';  
$text =~ s!<p class="h4">(.*?)Dies(.*?)</p>!<p class="h4">$1Das$2</p>!g;  
  
print $text,"\n";  

再见,
 克里斯蒂安

--
Wenn gewöhnliche Menschen Wissen erlangen, sind sie weise. Wenn Weise Einsicht erlangen, sind sie gewöhlnliche Menschen.
http://wwwtech.de/