Raku-Kurs / Reguläre Ausdrücke und Grammatiken / Reguläre Ausdrücke / Zeichenketten abgleichen
Das Match-Objekt
Wenn ein Regex trifft, liefert der Smartmatch ein
Match-Objekt. Dasselbe Objekt wird außerdem selbsttätig in der
besonderen Variablen $/ abgelegt, die manchmal „die
Match-Variable“ genannt wird.
Das Match-Objekt ist weit mehr als eine Ja-oder-Nein-Antwort. Als
Zeichenkette ist es der getroffene Text — entweder über die Methode
.Str oder über das Präfix ~, den Operator zur
Zeichenketten-Umwandlung, der genau dasselbe tut:
my $m = 'concatenate' ~~ /cat/;
say $m.Str; # cat
say ~$m; # catEs weiß auch, wo in der Zeichenkette der Treffer
gefunden wurde. Die Methode .from liefert die Position, an
der er beginnt, und .to die Position direkt hinter seinem
Ende:
my $m = 'room 7 left' ~~ /\d/;
say $m.Str; # 7
say $m.from; # 5
say $m.to; # 6Positionen werden ab null gezählt, die Ziffer 7 steht
also an Index 5.
Wenn der Regex nicht trifft, ist das Ergebnis gar
kein Match-Objekt — es ist der besondere Wert Nil.
Nil einem Skalar zuzuweisen lässt ihn undefiniert:
my $m = 'abc' ~~ /z/;
say $m.defined; # FalseSie können also stets .defined prüfen (oder den Wert
einfach in einem Wahrheitszusammenhang verwenden), bevor Sie den
getroffenen Text lesen.
Praxis
Lösen Sie 1 Quiz zum Inhalt dieses Themas.
Kursnavigation
← Quiz — Smartmatch | Quiz — Matching →
💪 Oder springen Sie direkt zu den Übungen dieses
Abschnitts.