Hi,
$changetext =~ s/([^[link]]
dieses matcht auf z.B. "rzG4?", nicht jedoch auf "in][kl". Bedenke bitte, was eine Zeichenklasse ist.
(https?://|\s+www)
Dir ist klar, dass die Zeichenkette "www" nicht die geringste Bedeutung hat? Ja, ich weiß, warum Du das so gemacht hast; aber das ist IMHO suboptimal. Übrigens gibt es auch FTP-URLs.
[A-Za-z0-9._-%&?/+=;]
Dies matcht auch auf ziemlich viel falsches... etwa auf "/%T/" und "abc???".
Dein ursprüngliches Problem liegt übrigens daran, dass dies greedy ist. In 'perldoc perlre' findest Du mit diesem Suchbegriff die Lösung.
[^[/link]])
Selbiges wie oben.
/<
Dies ist, besonders beim Ersetzungsstring, kein Sonderzeichen, dass man maskieren müsste.
[...]/
Regular Expressions in Perl sind auch z.B. in der Schreibweise s!a!b! möglich, was bei Maskierungen von "/" durchaus einen Lesbarkeitsvorteil darstellt.
span>/ig
Falsch. span>/nend ;-) Übrigens brauchst Du, wenn Du durch "i" die case-sensitivity deaktivierst, in Zeichenklassen nicht explizit Groß- _und_ Kleinbuchstaben anzugeben.
Cheatah