66. Модификаторы (adverbs) в регексах Perl 6, часть 2

Сегодня — продолжение обзора модификаторов регексов в 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 можно добавить целочисленный аргумент, чтобы сместить начало матча в нужную позицию.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Retype the CAPTCHA code from the image
Change the CAPTCHA codeSpeak the CAPTCHA code