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

Захоплення в заміні

Частина заміни в s/// може посилатися на захоплення, зроблені шаблоном. Це дозволяє переставити знайдений текст, а не просто відкинути його.

Наприклад, перетворимо дату, записану як рік-місяць, на місяць/рік, захопивши обидва числа й повернувши їх у зворотному порядку:

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

Шаблон захоплює рік у $0, а місяць — у $1. У заміні $1 та $0 записані у зворотному порядку, зі скісною рискою між ними. (Риска екранована як \/, щоб її не сприйняли за кінець підстановки.) Зауважте, що пробіли неістотні на боці шаблону, але літеральні на боці заміни, тож заміну записано без пробілів навколо.

Іменовані захоплення працюють так само. Завдяки цьому підстановка читається зрозуміло навіть тоді, коли частин кілька:

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

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

Тест — Оператор s///   |   Транслітерація


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