Сегодня — продолжение обзора модификаторов регексов в Perl 6.
:p(N) или :pos(N)
Начать поиск с указанной позиции. Важно обратить внимание на то, что при использовании этого адверба (как их называть по-русски? наречия вроде не оч в тему, а название модификаторы было в Perl 5) регекс привязывается к этой позиции и не может пропустить другие символы перед тем, как совпасть.
> 'hello world' ~~ /l./ 「ll」 > 'hello world' ~~ m:p(0)/l./ False > 'hello world' ~~ m:p(1)/l./ False > 'hello world' ~~ m:p(2)/l./ 「ll」
Попробуем найти третье вхождение буквы l:
> 'hello world' ~~ m:p(8)/l./ False > 'hello world' ~~ m:p(9)/l./ 「ld」
:c или :continue
Продолжить с места предыдущего совпадения. Рассмотрим на примере с той же строкой:
> 'hello world' ~~ /l./
「ll」
> 'hello world' ~~ /l./
「ll」
> 'hello world' ~~ m:c/l./
「ld」
Аналогично :p, к :c можно добавить целочисленный аргумент, чтобы сместить начало матча в нужную позицию.