Курс по 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///   |   Транслитерация


💪 Или преминете направо към упражненията в този раздел.