Курс языка программирования 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/// →
💪 Или перейдите сразу к упражнениям этого
раздела.