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

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

w

Connecting to %s