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


         

мы использовали регулярное выражение, которое


На печать выводится

a c

Пояснение: в операторе $a =~ /$re/; мы использовали регулярное выражение, которое совпало, и напечаталась буква a. Далее мы можем множество раз задавать пустое регулярное выражение //. Вместо него будет использоваться это последнее совпавшее кэшированное регулярное выражение. Это видно при печати буквы c. Если теперь изменить содержимое переменной $re, то это не повлияет на результат применения пустого регулярного выражения, потому что интерполированное значение переменной $re (т.е. внутреннее представление литерала (\w)) уже находится в кэшированном регулярном выражении по умолчанию).

Эта оптимизация не является естественной и с приходом объектов регулярных выражений она устарела.

Если оператор поиска или замены не содержит ничего кроме объекта регулярного выражения:

my $re=/…/; … if ($_ =~ $re) … или if (m/$re/) …

то в этом операторе напрямую применяется откомпилированный объект регулярного выражения.

Здесь уместно вспомнить об опасности применения модификатора o с объектами регулярных выражений:

my $re=/…/o;

который дает неожиданный и неприятный эффект, описанный ранее.


Содержание  Назад  Вперед





Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий