Forum: PC-Programmierung Perl - Regex Problem


von JK (Gast)


Lesenswert?

Hallo zusammen.

Kurz und knapp: Ich habe ein Problem mit folgender Regex.
Sie soll den String "Hallooo" nach der Anzahl von 0 bis 3 "o" 
durchsuchen.
Dementsprechend "ok" liefern (in der Konsole).

Leider passiert das aber nicht.

Wenn ich allerdings den Quantifier auf folgendes abändere, 
funktionierts:
1
m/o{1,3}/

Was mache ich falsch?


Hier der Code:
1
$string = "Hallooo";
2
3
if($string =~ m/o{,3}/)
4
{
5
    print "ok";
6
}
7
8
else
9
{
10
   print "not matched!";
11
}

Danke + Gruß
Janos

von Jay W. (jayway)


Lesenswert?

\bHallo{0,3}\b

Findet auch Hallo(o,o) in einem größeren String.

von JK (Gast)


Lesenswert?

>\bHallo{0,3}\b

>Findet auch Hallo(o,o) in einem größeren String.


Nix verstehen.

von polski (Gast)


Lesenswert?

Hallo Janos,

http://perldoc.perl.org/perlre.html#Quantifiers

der von Dir angegebene Quantifier {,3} ist syntaktisch nicht korrekt.

von Jay W. (jayway)


Lesenswert?

\b matcht auf Wortgrenze und stellt sicher das es sich um ein einzelnes 
Hall(ooo) handelt.

{0,3} matcht auf 0 - 3faches Vorkommen des letzten Zeichens

\b sorgt dafür dass nach dem Hall(ooo) keine weiteren Buchstaben mehr 
kommen dürfen.

Damit wird das Hall(ooo) auch in einem String wie "Holla Hallooo Bingo" 
gefunden. Ein Halloooo wird nicht gematcht ein THallooo auch nicht.

Dein Fehler lag im {,3}. Es muss {0,3} heißen.

Jetzt klarer?

von JK (Gast)


Lesenswert?

Ahh...jetzt verstehe ich. :)

Danke

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.