perl_anfänger: reguläre ausdrücke (..)4$1

Hallo,

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?

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

gruss und danke

  1. Hi,

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

    falsch gedacht. $1 ist eine Variable, die _nach_ der Regular Expression gefüllt wird; hier dürfte der Wert eines vorherigen Matches genutzt werden, bzw. ein Leerstring, wenn es einen solchen nicht gab. Eine Backreference innerhalb _einer_ RegExp geschieht mittels \1 etc.

    es wird aber auch
         hh4asdfasdf
    erkannt (als true gemeldet)
    warum?

    Jetzt klarer?

    Cheatah

    --
    X-Will-Answer-Email: No
  2. 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

    1. Hi,

      s/(.)\1{2,}/$1/g;
      Damit kommt man diesen 'HIIIIIILLLLLFFFEEEE!!!!!'-Leuten sehr
      schnell bei :)

      dummerweise auch dem Verkäufer von Sauerstoffflaschen ;-)

      Cheatah

      --
      X-Will-Answer-Email: No
      1. Hallo Cheatah,

        s/(.)\1{2,}/$1/g;
        Damit kommt man diesen 'HIIIIIILLLLLFFFEEEE!!!!!'-Leuten sehr
        schnell bei :)

        dummerweise auch dem Verkäufer von Sauerstoffflaschen ;-)

        In der Tat, ja :) Aber damit kann ich leben, in der deutschen
        Sprache gibt es nur sehr, sehr wenige Worte mit 3 gleichen
        Buchstaben hintereinander.

        Gruesse,
         CK

        1. Hallo Cheatah,

          s/(.)\1{2,}/$1/g;
          Damit kommt man diesen 'HIIIIIILLLLLFFFEEEE!!!!!'-Leuten sehr
          schnell bei :)

          dummerweise auch dem Verkäufer von Sauerstoffflaschen ;-)

          In der Tat, ja :) Aber damit kann ich leben, in der deutschen
          Sprache gibt es nur sehr, sehr wenige Worte mit 3 gleichen
          Buchstaben hintereinander.

          Gruesse,
           CK

          danke Euch beiden... das Skript das ich zum lernen benutze(n muss) ist leider stark fehlerhaft :(

          schönes Wochenende

        2. Hi,

          dummerweise auch dem Verkäufer von Sauerstoffflaschen ;-)
          In der Tat, ja :) Aber damit kann ich leben, in der deutschen
          Sprache gibt es nur sehr, sehr wenige Worte mit 3 gleichen
          Buchstaben hintereinander.

          +------------------------+
          |      es müssen         |
          |        keine           |
          | Buchstaben sein... ;-) |
          +------------------------+

          Cheatah

          --
          X-Will-Answer-Email: No