reguläre ausdrücke (..)4$1
perl_anfänger
- perl
0 Cheatah0 Christian Kruse0 Cheatah
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
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
Hallo perl_anfänger,
ich dachte, folgender Ausdruck
/(..)4$1/
erkennt alle "strings", die wie folgt aufgebaut sind:AA4AA
AB4ABalso 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
Hi,
s/(.)\1{2,}/$1/g;
Damit kommt man diesen 'HIIIIIILLLLLFFFEEEE!!!!!'-Leuten sehr
schnell bei :)
dummerweise auch dem Verkäufer von Sauerstoffflaschen ;-)
Cheatah
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
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
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