Курс языка программирования 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 собрал их все.

Глобальное сопоставление — естественный инструмент всякий раз, когда вопрос звучит как «сколько…» или «все…», а не «есть ли…».

Навигация по курсу

Область действия наречия   |   Значимые пробелы


💪 Или перейдите сразу к упражнениям этого раздела.