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


ba2f5a3f

Оператор qr/…/ и модификаторы


Объект регулярного выражения компилируется вместе со своими модификаторами, эти режимы поиска "вшиваются" в откомпилированное регулярное выражение, и их нельзя потом изменить. Пример:

$_='aB'; my $re=qr/[a-z]+/; print $& if /$re/;

Идет поиск с учетом регистра символов, на печать выводится a. Модификаторы, находящиеся снаружи объекта регулярного выражения, не могут повлиять на его работу:

print $& if /$re/i;

print $& if /(?i)$re/;

print $& if /(?i:$re)/i;

Все равно выводится только буква a. Модификатор должен стоять в самом операторе, который возвращает объект регулярного выражения:

$_='aB'; my $re=qr/[a-z]+/i; print $& if /$re/;

Теперь печатается aB.

Верно и обратное: режимы поиска, которые были установлены внутри объекта регулярного выражения, не влияют на остальную часть регулярного выражения, в которое входит этот объект. Пример:

$_='aB'; my $re=qr/(?i)[a-z]+/; print $& if /${re}b/;

Ничего не напечатается, т.к. режим поиска без учета регистра (?i) не действует вне объекта регулярного выражения $re. Здесь фигурные скобки, окружающие имя переменной, отделяют ее от последующих букв так же, как и в случае с интерполяцией переменных. Следующий пример:

$_='aB'; my $re=qr/(?i)[a-z]+/; print $& if /${re}B/;

напечатает aB.



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





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