RegExp - Erkennen von HTML-Tags
Julius Mittenzwei
- perl
Hallo ...
Seit Tagen quäl ich mich mit folgendem Problem rum:
Ich habe ein Stück HTML-Seite in $_ und möchte darin alle Wörter $wort rot färben.
Ungefähr so: s/$wort/"<font color="#FF0000">".$&."</font>"/egisx;
Das geht allerdings nur solange gut, solange er keine Übereinstimmungen innerhalb von HTML-Tags findet. Kann mit irgendeiner einen Tip geben, wie man dieses Problem löst? Wie kann ich herausfinden, ob sich ein gefundenes Wort innerhalb von <> befindet?
Danke schonmal
Julius
hi!
Ich habe ein Stück HTML-Seite in $_ und möchte darin alle Wörter $wort rot färben.
Ungefähr so: s/$wort/"<font color="#FF0000">".$&."</font>"/egisx;Das geht allerdings nur solange gut, solange er keine Übereinstimmungen innerhalb von
HTML-Tags findet. Kann mit irgendeiner einen Tip geben, wie man dieses Problem löst?
Vielleicht etwas in der Art:
s/([>^][^<]*)($wort)/$1<font ...>$2</font>/g;
Ob das so funktioniert oder überhaupt der richtige Ansatz ist, weiß ich allerdings nicht ;-)
bye, Frank!
Hi,
Ich habe ein Stück HTML-Seite in $_ und möchte darin alle Wörter $wort rot färben.
Ungefähr so: s/$wort/"<font color="#FF0000">".$&."</font>"/egisx;
mit einer einzelnen RegExp wohl nicht, aber mit zweien eventuell:
s/>[^<]*$wort/<font color="#FF0000">$wort</font>/gi; # IMHO brauchst Du esx nicht
Hier werden zunächst nur $wort's nach einem HTML-Tag gesucht. Dann brauchst Du noch:
s/[1]*$wort/<font color="#FF0000">$wort</font>/gi;
Ich bin aber nicht sicher, ob dies dann zu 100% arbeitet, irgendwie scheint es noch Probleme zu geben, wenn z.B. mehrere $wort's hintereinander stehen. Vielleicht reicht es aber als Basis, u.a. auch wenn Du mit if-Abfragen arbeitest.
Cheatah
^< ↩︎