niehztog: RegExp: URL korrekt erkennen

Beitrag lesen

Hallo,
ich bastle momentan an einem Regulären Ausdruck, der aus einem Fließtext sämtliche .com, .net, .org und .de URL's herausfiltern soll. Interessant ist für mich nur der teil der URL bis exakt zur TLD ohne Subdomains. Erkannt werden sollen nach Möglichkeit auch reine Domains ohne http oder www. Ich benutze PHP4 und die Funktion preg_match_all.

Das ist der aktuelle Stand meiner Bemühungen:

  
\S+\.(?:com|net|org|de|){1}  

Das \S deswegen, weil auch neue IDN Domains mit Sonderzeichen erkannt werden sollen.

Leider hat mein Ausdruck noch Probleme mit URLs wo Satzzeichen wie z.b. Klammern unmittelbar vor der URL stehen:
(rollmops.de)
(http://www.rumala.net)
Hier wird die öffnende Klammer imemr miterkannt, weil sie ja in \S enthalten ist.

http://www.gallox.de,http://www.julon.de
Sowas wird als ein Ganzes erkannt und nicht als zwei getrennte Übereinstimmungen.

Ich bin für jeden hilfreichen Tip dankbar.

Gruss
niehztog