Курс Raku / Регулярні вирази та граматики / Регулярні вирази / Підстановка та заміна

Оператор підстановки

Оператор підстановки — це s///. Він схожий на зіставлення з другим полем: шаблон іде між першими двома скісними рисками, а текст заміни — між останніми двома:

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

Підстановка змінює змінну на місці, тож оновлюється сама $s. Текст у частині заміни є літеральним — брати його в лапки не потрібно.

Як і зіставлення, підстановка типово торкається лише першого входження. Додайте прислівник :g, щоб замінити кожне входження:

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

Якщо ви хочете зберегти оригінал і отримати змінену копію замість зміни на місці, скористайтеся оператором S/// з великої літери: він виконує підстановку й повертає змінений рядок, залишаючи оригінал недоторканим. Оскільки він не оновлює змінну на місці, спрямуйте його на неї за допомогою given, а не ~~:

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

(Запис $orig ~~ S/// попереджає вас про те, що слід використати given — з S/// немає чого змінювати на місці.)

Така сама неруйнівна поведінка доступна й у вигляді методу .subst, який повертає новий рядок:

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

Практика

Виконайте 1 тест за змістом цієї теми.

Навігація курсом

Підстановка та заміна   |   Тест — Оператор s///


💪 Або перейдіть одразу до вправ цього розділу.