Andreas Flückiger: Text zwischen zwei HTML-Tags

Beitrag lesen

Hallo Michael und Poldi

if ($htmltext =~ /<a[^>]>(.*?)</a>/i)
   {
     my $linktext = $1;
     # ... und hier die Weiterverarbeitung
   }

Müsste nach [^>] nicht noch ein * hin?

Meine 'Lösung' ist nicht idiotensicher: Es könnte sein, daß jemand innerhalb des HREF-Wertes in "" eingeschlossen ein ">"-Zeichen verwendet ... :-(((
(Hoffentlich erlaubt kein Dateisystem solche Zeichen innerhalb von Dateinamen.)

Hier habe ich noch eine kompliziertere Variante:

if ($htmltext =~ /<a(\s+[a-z]+\s*=\s*("[^"]*"[^>\s]*))*\s*>(.*?)</a>/is)
   {
     my $linktext = $3;
     # ... und hier die Weiterverarbeitung
   }

Gibt es eigentlich irgendwo im
Web weiterfuehrende Literatur zu solchen Extraktionsproblemen?

Mit regular expressions kann man alles machen. ;-)

Vielleicht noch ein paar Links dazu:
<../../tgcg.htm>
http://www.phy.uni-bayreuth.de/~btpa25/perl/perl_reg.html
http://www.heise.de/ix/artikel/1998/11/178/

Gruss
Andreas