Jörg: Regular Expressions: Elegantere Lösung möglich?

Beitrag lesen

Hi Christian,

$text =~ s!<p class="h4">(.*?)Dies(.*?)</p>!<p class="h4">$1Das$2</p>!g;

funktioniert nicht, weil "Dies" (Dein Beispiel) bisweilen mehrfach auftaucht. (Hatte ich in meiner Frage auch geschrieben). Deine Programm-Zeile ersetzt nur das 1.Vorkommen:

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

Ergebnis:
<p class="h4">Das ist ein Test. Dies ist ein Test.</p>

Daher meine (ich vermute: unelegante) while-Schleife.
Jörg