Raku-Kurs / Reguläre Ausdrücke und Grammatiken / Reguläre Ausdrücke / Ersetzung und Austausch

Captures in der Ersetzung

Der Ersatzteil von s/// kann sich auf die Captures beziehen, die das Muster gemacht hat. So können Sie den getroffenen Text umstellen, statt ihn einfach wegzuwerfen.

Machen Sie etwa aus einem als Jahr-Monat geschriebenen Datum ein Monat/Jahr, indem Sie beide Zahlen capturen und in der anderen Reihenfolge wieder einsetzen:

my $d = '2025-06';
$d ~~ s/ (\d+) '-' (\d+) /$1\/$0/;
say $d; # 06/2025

Das Muster capturt das Jahr in $0 und den Monat in $1. In der Ersetzung stehen $1 und $0 in umgekehrter Reihenfolge, mit einem Schrägstrich dazwischen. (Der Schrägstrich ist als \/ maskiert, damit er nicht für das Ende der Ersetzung gehalten wird.) Beachten Sie, dass Leerzeichen auf der Musterseite unbedeutend sind, auf der Ersatzseite aber wörtlich, die Ersetzung ist also ohne umgebende Leerzeichen geschrieben.

Benannte Captures funktionieren genauso. Das lässt eine Ersetzung auch dann klar lesen, wenn es mehrere Teile gibt:

my $name = 'Doe, Jane';
$name ~~ s/ $<last>=(\w+) ', ' $<first>=(\w+) /$<first> $<last>/;
say $name; # Jane Doe

Kursnavigation

Quiz — Der s///-Operator   |   Transliteration


💪 Oder springen Sie direkt zu den Übungen dieses Abschnitts.