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

Der Ersetzungsoperator

Der Ersetzungsoperator ist s///. Er sieht aus wie ein Treffer mit einem zweiten Fach: Das Muster steht zwischen den ersten beiden Schrägstrichen und der Ersatztext zwischen den letzten beiden:

my $s = 'hello world';
$s ~~ s/world/Raku/;
say $s; # hello Raku

Die Ersetzung verändert die Variable an Ort und Stelle, $s selbst wird also aktualisiert. Der Text im Ersatzteil ist wörtlich — Sie setzen ihn nicht in Anführungszeichen.

Wie das Treffen berührt die Ersetzung standardmäßig nur das erste Vorkommen. Fügen Sie das Adverb :g hinzu, um jedes Vorkommen zu ersetzen:

my $s = 'a-b-c';
$s ~~ s:g/'-'/_/;
say $s; # a_b_c

Wenn Sie das Original behalten und statt einer Änderung an Ort und Stelle eine veränderte Kopie erzeugen möchten, nehmen Sie den Operator S/// mit großem S: Er führt die Ersetzung aus und liefert die veränderte Zeichenkette, während das Original unberührt bleibt. Da er keine Variable an Ort und Stelle aktualisiert, richten Sie ihn mit given statt mit ~~ auf eine:

my $orig = 'color';
say S:g/o/0/ given $orig; # c0l0r
say $orig;                # color

($orig ~~ S/// zu schreiben warnt Sie, stattdessen given zu verwenden — bei S/// gibt es nichts, was an Ort und Stelle zu ändern wäre.)

Dasselbe zerstörungsfreie Verhalten gibt es auch als Methode, .subst, die eine neue Zeichenkette liefert:

my $orig = 'color';
say $orig.subst('o', '0', :g); # c0l0r
say $orig;                     # color

Praxis

Lösen Sie 1 Quiz zum Inhalt dieses Themas.

Kursnavigation

Ersetzung und Austausch   |   Quiz — Der s///-Operator


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