Cheatah: reg. Expr funktioniert nicht ganz richtig.

Beitrag lesen

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