Курс языка программирования Raku / Регулярные выражения и грамматики / Регулярные выражения / Наречия
Глобальное сопоставление
По умолчанию регулярное выражение находит только
первое совпадение. Наречие :g (сокращение
от :global) находит в строке каждое
совпадение. Записывают его у оператора m///:
my @all = 'a1b2c3' ~~ m:g/\d/;
say @all; # [「1」 「2」 「3」]
say @all.elems; # 3С :g результат ведёт себя как список объектов совпадения
— по одному на каждое место, где шаблон был найден. Их можно
пересчитать, обойти циклом или превратить каждый в строку:
my @numbers = 'a12 b3 c456' ~~ m:g/\d+/;
say @numbers.map(*.Str).join(', '); # 12, 3, 456Здесь \d+ совпал с тремя отдельными вереницами цифр, и
:g собрал их все.
Глобальное сопоставление — естественный инструмент всякий раз, когда вопрос звучит как «сколько…» или «все…», а не «есть ли…».
Навигация по курсу
← Область действия наречия | Значимые пробелы →
💪 Или перейдите сразу к упражнениям этого
раздела.