|
|
 |

|

 |

| Community » Perl: Allgemeines Forum |
|
Problem mit RegEx und ersetzen
|
Seitenanfang |
Hi, ich hab folgendes Problem: Ich habe einen längeren Text. In diesem Text $text kommen auch mehrere Links vor, etwa derart: <a href="http://www.xyz.tld">Name-xyz</a>Ich will nun die Zeichenfolge "xyz" gegen eine andere Zeichenkette "abc" austauschen, aber nur, wenn sie in einem Link auftaucht, also innerhalb der Zeichen <a href=...</a> Ansonsten soll die Zeichenkette ausserhalb der <a></a>-Tags unverändert bleiben. Das gelingt mir nun überhaupt nicht, weil "xyz" mehrfach auftauchen kann, so dass $text =~ s/<a href=(.*?)xyz(.*?)</a>/<a href=$1abc$2<\/a>/g; nicht funktioniert. Hat jemand einen Tipp?
Datum: 08.08.2005-13:08

|
re: Problem mit RegEx und ersetzen
|
Seitenanfang |
sollte ich dich richtig verstehen, was ich ehrlich gesagt nicht glaube, solltest du zuerst mal abfragen ob xyz im href und im namen vorkommt und erst dann ersetzen:
while( $text =~/<a href=(.*?)(.*?)(.*?)>Name-$2<\/a>/g ) { # $2 entspricht in dem fall also xyz; die substitution wird also nur durchgeführt wenn im href und im name- der gleiche ausdruck vorkommtmy $old_href = $1 . $2 . $3; my $new_href = $1 . 'abc' . $3; my $xyz = $2; $text =~ s/<a href=$old_href>Name-$xyz<\/a>/<a href=$new_href>Name-$xyz<\/a>/; }
gib mal ein konkretes beispiel an was du genau machen willst. (nicht mit xyz) mfG
Datum: 08.08.2005-15:43

|
re: Problem mit RegEx und ersetzen
|
Seitenanfang |
Hi Alexander, man muss es wohl so machen wie Du sagst, mit Abfrage und while. Das läuft jetzt auch, ich hatte allerdings gedacht, es gäbe eine noch elegantere Lösung mit Regulären Ausdrücken (bin Anfänger). Aber es läuft jetzt.Diese Prozedur war nötig: - In einem Suchscript für die Website (http://www.forum-gesundheitspolitik.de) werden die Fundstellen bei der Ausgabe der Suchergebnisse farblich besonders herausgehoben - Das passiert vorher mit (verkürzt) $text =~ s/($suchbegriff)/$fettanf$1$fettend/g; wobei $fettanf und $fettend HTML-Formatierungen sind - Nun habe ich aber irgendwann gemerkt, wenn Suchbegriff z.B. "redaktion" ist, und im Text taucht ein Link auf "<a href="http://spiegel.de/redaktion">Spiegel-Redaktion</a> dann wird auch die URL verhunzt, also auch dort eine Hervorhebung gemacht. - Diese Hervorhebung innerhalb von <a href ... </a> muss also wieder raus. Das mache ich jetzt mit einer while-Schleife. Ich hatte gehofft, es ginge mit einem einzigen Ersetzen-Befehl. Danke für Deine Mühe.
Datum: 08.08.2005-16:21

|
|

|

|

|
 |

|

|
|