URLs aus Text extrahieren (Perl)

Vor kurzem ist die Frage, wie man aus einem Text die URLs extrahieren könnte, im Gentoo-Forum aufgetaucht. Mit Perl kann man das natürlich schön machen. Der folgende reguläre Ausdruck liefert alles, was mit „http://“, „https://“ oder nur mit „www.“ anfängt bis zum nächsten Leerzeichen:

/((?:https?:\/\/|www\.)[^\s">]+)/

Durch das „?:“ in der zweiten Klammer wird das unnötige Speichern von „http://“, „https://“ oder „www.“ in $2 verhindert.

Wem das Maskieren der Slashes nicht gefällt, dem emfehle ich alternative Delimiter, z. B.:

m!((?:https?://|www\.)[^\s">]+)!

Mit

@urls = $zeile =~ m!((?:https?://|www\.)[^\s">]+)!g;

hat man dann alle URLs, die in der jeweiligen Zeile stehen, in @urls.

Abgesehen davon existieren auch noch einige Module, die das vermutlich besser, schneller, schöner, etc. können ;-)

Letzte Änderung: 19.09.2008

nasauber.de © 2005–2017 by Tobias Leupold