Font
[thread]11277[/thread]

regexp: Links erkennen

Reader: 1


<< >> 3 entries, 1 page
Nordlicht
 2008-02-10 19:52
#105773 #105773
User since
2005-10-16
182 articles
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 articles
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 articles
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 entries, 1 page



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