[Dresden-pm] Reguläre Ausdrücke - Suchen und Ersetzen von Worten

Falk Herrmann falk.herrmann at bike24.net
Di Aug 12 01:31:40 PDT 2008


Da du den Text für jedes Keyword einzeln durchgehst und auch veränderst, 
sind die 'letzten' Keywords ("affe klettert", "hund rennt") ja gar nicht 
mehr im Text enthalten.

Die Schwierigkeit ist wohl nicht das Problem zu lösen, sondern eine 
Lösung zu finden mit akzeptabler Performance. $text in alle Möglichen 
Zeichenketten zu zerlegen und dann wieder korrekt zusammenzubauen wird 
sehr Performance schwach.

Eine andere Variante währe die Keywords vorab zu sortieren. Zusätzlich 
beachte man das Leerzeichen im s///.

my @keywords = ("affe klettert", "hund rennt", "affe", "hund");
my $text = "Ein Affe klettert, weil er ein Affe ist. Ein Hund rennt, 
weil er ein Hund ist.";
my $link = '<a href="#">';
my $linkend = '</a>';
foreach my $keyword(@keywords) {
         $text =~ s/ ($keyword)/$link$1$linkend/gi;
}
print $text;

Sicherlich finden sich noch bessere Lösungen. Mal schauen, was noch kommt.

Falk.

Thomas Rittsche wrote:
> Hallo an alle,
> ich habe mal wieder ein Problem, bei dem ich überhaupt keine Idee
> habe, wie man da rangehen könnte.
> 
> Das Ziel ist es bestimmte Wörter bzw. Wortgruppen in einem Text durch
> einen Link zu ersetzen (bzw. den Link darum zu bauen). Mit einzelnen
> Wörtern ist das alles kein Problem. Die Schwierigkeit liegt in
> Wortgruppen, die selbst als Schlüsselworte definiert sind und dabei
> einzelne Schlüsselworte enthalten.
> 
> Hier mal ein Beispiel zum besseren Verständnis:
> 
> my @keywords = ("affe", "hund", "affe klettert", "hund rennt");
> my $text = "Ein Affe klettert, weil er ein Affe ist. Ein Hund rennt,
> weil er ein Hund ist.";
> my $link = "<a href=\"#\">";
> foreach my $keyword(@keywords) {
> 	$text =~ s/($keyword)/$link$1$\<\/a>/gi;
> }
> print $text;
> 
> Ziel wäre es, Links um "affe", "hund", "affe klettert", "hund rennt"
> zu bauen. Leider baut er mir die so nur um "affe" und "hund".
> 
> Wer kann mich auf den Pfad der Erleuchtung führen?
> 
> Grüße aus Radebeul und vielen Dank!
> 
> Thomas
> _______________________________________________
> Dresden-pm mailing list
> Dresden-pm at pm.org
> http://mail.pm.org/mailman/listinfo/dresden-pm
> 
> 



Mehr Informationen über die Mailingliste Dresden-pm