Christian Kruse: reguläre ausdrücke (..)4$1

Beitrag lesen

Hallo perl_anfänger,

ich dachte, folgender Ausdruck
/(..)4$1/
erkennt alle "strings", die wie folgt aufgebaut sind:

AA4AA
AB4AB

also 2 Zeichen gefolgt von einer 4 gefolgt von den ersten
beiden
zeichen, es wird aber auch
     hh4asdfasdf
erkannt (als true gemeldet)

warum?

$1 ist erst nach dem Match gefuellt. Zu dem Zeitpunkt, wo
geprueft wird, ist $1 undef und damit implizit ein
Leerstring. Du suchst 'Backreferences':

/(..)4\1/

Mein Lieblingsausdruck in dieser Art ist ueberigens

s/(.)\1{2,}/$1/g;

Damit kommt man diesen 'HIIIIIILLLLLFFFEEEE!!!!!'-Leuten sehr
schnell bei :)

kann ich die $1 nicht auf für diesen zweck verwenden??

Nein, Erklaerung siehe oben.

Gruesse,
 CK