Schrift
[thread]11277[/thread]

regexp: Links erkennen

Leser: 1


<< >> 3 Einträge, 1 Seite
Nordlicht
 2008-02-10 19:52
#105773 #105773
User since
2005-10-16
182 Artikel
BenutzerIn
[default_avatar]
Hi Leute,

Ich suche einen Regexp, der erkennt, ob es sich um einen 'echten' Link handelt.

Mein Programm versucht andauernd Links zu folgen, in denen "#xyz" oder "/" oder sonst irgendwas merkwürdiges als Adresse steht. Ich möchte aber nur richtigen Adressen folgen, wie z.B.:
Code: (dl )
1
2
3
http://wwww.xyz.de
https://login.xyz.com
ftp://ftp.xyz.org

Hat da Jemand ne Idee dazu? Ich finde nämlich keine guten Kriterien für einen Regexp. Hab schon überlegt, ob man das "://" erkennen lässt, denn der Rest variiert ja viel zu stark. Aber vielleicht habt ihr noch ne bessere Lösung...?!

Gruß, Nord.
RalphFFM
 2008-02-10 20:18
#105774 #105774
User since
2006-11-16
258 Artikel
BenutzerIn
[Homepage] [default_avatar]
Die meisten Leute werden vermutlich HTML::LinkExtor / HTML::Parser dafür nehmen.
moritz
 2008-02-10 21:04
#105775 #105775
User since
2007-05-11
923 Artikel
HausmeisterIn
[Homepage]
user image
Ich habe gute Erfahrungen mit Regexp::Common::URI (CPAN:Regexp::Common) gemacht.

Um Links inklusive optionaler Anker zu finden, verwende ich in meinen IRC-Logs folgende Regex:
Code (perl): (dl )
m/$RE{URI}{HTTP}(?:#[\w_%:-]+)?(?<![.,])/

Der letzte Teil sorgt dafür, dass Punkt und Komma, die am Ende einer URL stehen, nicht zur URL gezählt werden. Gültige URLs können das zwar enthalten, im Normalfall ist es aber nicht gewollt.

Für https und ftp kann man sich dann was ähnliches stricken.
<< >> 3 Einträge, 1 Seite



View all threads created 2008-02-10 19:52.