Курс языка программирования Raku / Регулярные выражения и грамматики / Регулярные выражения / Сопоставление строк
Объект совпадения
Когда регулярное выражение совпадает, умное сопоставление возвращает
объект совпадения. Тот же объект автоматически сохраняется в
специальной переменной $/, которую иногда называют
«переменной совпадения».
Объект совпадения — это гораздо больше, чем ответ «да или нет». Как
строка он представляет собой совпавший текст: это даёт либо метод
.Str, либо префиксный ~, оператор приведения к
строке, который делает ровно то же самое:
my $m = 'concatenate' ~~ /cat/;
say $m.Str; # cat
say ~$m; # catОн знает и то, где в строке было найдено совпадение.
Метод .from даёт позицию, с которой оно начинается, а
.to — позицию сразу за его концом:
my $m = 'room 7 left' ~~ /\d/;
say $m.Str; # 7
say $m.from; # 5
say $m.to; # 6Позиции считаются от нуля, поэтому цифра 7 стоит на
индексе 5.
Когда регулярное выражение не совпадает, результат
вовсе не является объектом совпадения — это особое значение
Nil. Присваивание Nil скаляру оставляет его
неопределённым:
my $m = 'abc' ~~ /z/;
say $m.defined; # FalseТак что перед чтением совпавшего текста всегда можно проверить
.defined (или просто использовать значение в логическом
контексте).
Практика
Пройдите 1 тест по содержанию этой темы.
Навигация по курсу
← Тест — Умное сопоставление | Тест — Сопоставление →
💪 Или перейдите сразу к упражнениям этого
раздела.