Raku-Kurs / Reguläre Ausdrücke und Grammatiken / Reguläre Ausdrücke / Adverbien
Geltungsbereich von Adverbien
Das Adverb :i lässt sich an zwei Stellen schreiben, und
der Unterschied liegt darin, wo es wirkt. Am Operator
macht m:i/…/ das ganze Muster
schreibungsunabhängig. Innerhalb des Regex geschrieben ist
:i positionsgebunden — es gilt nur ab der Stelle,
an der es steht. Damit können Sie die Schreibungsregel für nur einen
Teil eines Musters lockern:
say 'RAKU' ~~ /R :i aku/; # 「RAKU」
say 'raku' ~~ /R :i aku/; # NilHier wird das vorangehende R weiterhin
schreibungsabhängig getroffen — kleingeschriebenes raku
scheitert also —, während :i nur das darauffolgende
aku schreibungsunabhängig macht. Bei m:i/Raku/
ist dagegen jeder Buchstabe schreibungsunabhängig, es treffen also
sowohl RAKU als auch raku.
Auf eine Gruppe beschränkt
Die Wirkung eines inneren Adverbs ist außerdem auf seine umgebende
Gruppe beschränkt. In /[:i abc]def/ übergeht nur
abc die Schreibung; das def hinter der Gruppe
wird streng getroffen:
say 'ABCdef' ~~ /[:i abc]def/; # 「ABCdef」
say 'ABCDEF' ~~ /[:i abc]def/; # NilEin Adverb abschalten
Um ein Adverb mitten im Muster wieder abzuschalten, verneinen Sie es
mit einem !. :!i stellt also ab dieser Stelle
die Schreibungsabhängigkeit wieder her:
say 'ABCdef' ~~ / :i abc :!i def /; # 「ABCdef」
say 'ABCDEF' ~~ / :i abc :!i def /; # Nil:i lockert die Schreibungsregel für abc,
dann setzt :!i sie wieder in Kraft, sodass def
genau treffen muss. Gruppieren und :!i sind zwei Wege zum
selben Ziel: ein Adverb auf genau den Teil des Musters zu beschränken,
der es braucht. Derselbe Ein-Aus-Schalter funktioniert auch bei den
übrigen Adverbien im Muster.
Kursnavigation
← Quiz — Ignorecase | Globales Matching →
💪 Oder springen Sie direkt zu den Übungen dieses
Abschnitts.