Курс по 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 ги събра всички.

Глобалното съпоставяне е естественият инструмент винаги когато въпросът е „колко…“ или „всички…“, а не „има ли изобщо…“.

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

Обхват на наречията   |   Значещи интервали


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