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