Регулярные выражения в Perl

Что есть

* Символ * . * [...] [^...] * + * * ? + {,} * (). Эти скобки, в тех рег. выр, где используется ссылки, скобки нумеруются по порядку их появления в рег. выр.. При этом, если скобка повторяется, то попадает в регистр только первое совпадение, то есть для рег выр ((ab)+) в первую скобку попадёт ababab..., во вторую --- ab. Кроме того, можно использовать регистры прямо в рег. выр: ([ab])\1. * ^ | $

Про Perl

* Есть look ahead, look behind. Это наборы символов класса ^$|, которые сами не сопоставляются в строке, но всё выраж. считается нормальным, если то, что в look-ahead сопоставилось с тем, что стоит непосредственно за ним. То есть, в перле появляются штуки, осущ. проверки условий. Некоторые движки откажутся внутри look-behind втыкать что-угодно. Это нужно, особенно в случае negative, когда в строке чего-то нет. * В перле есть groupings * В перле есть вещи, которые позволяют управлть разбором

Про это вс лектор расск. не будет, но забыл упомянуть про одну группу модификаторов, которые исп. в Перле. Это модификаторы нежадные. По традиции, правило самый левый самый длинный, точнее, правидо обработки модификаторов, называется greedy. Почему: потому что если ставим звёждочку/плюсик, то это жадный повторитель. В качестве сопостю. подставляется сама длинная из возможных слева подсторок. Например, иногда хочется, чтобы было не от первой до последней, а до первой закрывающей скобки, например. В данном случае можно написать что-то в духе <[^>]*>, но в более сложных случаях это не работает. Для этого сущ. более сложный класс повторителей *? и +? --- выбирается не самая длинная, а самая короткая. Чем это опасно? Пототму что в отличие от классич. рег. выр., далеко не всегда можно интерпретировать, как пойдёт разбор выражения. Например, (ab|zzz0)+? Тем не менее, лектор безоговорочно признаёт право на существование и лукахеда, и модификаторов жадности.

PCRE

В какое-то время создатели ЧП решили пресечь практику, когда каждый автор создаёт свою реализацию регэкспов. С одной стороны, появился gnu regexp, с другой был перл.


Сведения о ресурсах

Готовность (%)

Продолжительность (ак. ч.)

Подготовка (календ. ч.)

Полный текст (раб. д.)

Предварительные знания

Level

Maintainer

Start date

End date

0

1

1

1

1

ConstantinYershow, DmitryChistikov, VsevolodKrishchenko


CategoryLectures CategoryCmc CategoryUneex

LecturesCMC/LinuxShell2008/11/01PerlRegExp (last edited 2008-07-24 22:11:31 by eSyr)