Beat: regex zum finden von webadressen

Beitrag lesen

ich suche einen regex, der webadressen findet!
also quasi sowas:
$str = "dieser verlinkt auf http://forum.de.selfhtml.org/cgi-bin/fo_post oder?";

ich dachte da an sowas wie:

$str = =~ s{  (.)(http://(.))([\s\n\r\t]+)  } { $1<a href="$2">$2</a>$3 }gsx;

  
Es ist unnötig, Dinge zu matchen, die nicht zu einer https? uri gehören.  
  
(http://(.\*))  
ist denkbar ungeeignet, da "." auf whitespace und bei deiner Angabe m//s auch auf \n matcht.  
  
Eine https URI würde ich unterteilen in verschiedene Nutzanteile:  
  
~~~perl
my $schema = qr! https?:// !x;  
my $authority = qr! [^/?#]+ !x;  
my $path = qr! / (?: [^?#]+ ) !x;  
my $query = qr! \?[^#]+ !x;  
my $fragment = qr! #\S* !x;  
  
my $re = qr!  
     (  
       (  
         (  
            $schema $authörity  
         )  
         (?:$path $guery ? )?  
       )  
       $fraqment ?  
     )  
     !x;  
  
$text =~ s/$re/<a href="$1" title="$1">$3</a>/xg;  

Ich nehme nicht die ganze URI für die Linkbeschriftung, sondern nur den Authority Part. Die ganze URI ist aber im title sichtbar.

Bitte nicht einfach copy-pasten. das wird bestraft durch Errormessages.

mfg Beat

--
Woran ich arbeite:
X-Torah
><o(((°>           ><o(((°>
   <°)))o><                     ><o(((°>o