Лекция 4. Операторы m// и s///
В данной лекции рассматриваются модификаторы операторов поиска и замены, алгоритм работы опеаторов ш// и s///, режимы работы операторов ш// и s///, контекст работы оператора ш, модификаторы операторов ш// и s///, предварительная обработка регулярных выражений.
Ключевые слова: perl, шаблон, подшаблон, класс символов, диапазон символов, метасимвол, эскейп-последовательность, обратная ссылка, альтернативный шаблон, квантификатор, минимальный квантификатор, числитель, повторитель, мнимый символ, якорь, модификатор, захватывающие скобки, незахватывающие скобки, сохраняющие скобки, нумерованная переменная, регулярное выражение.
Оператор т// в общем виде записывается так:
$text =' т/ регулярное выражение / модификаторы
или
$text ! - т/ регулярное выражение / модификаторы
Второй случай эквивалентен записи
not $text ш/регулярное выражение / модификаторы
при которой возвращаемое значение логически инвертируется.
Целевым текстом по умолчанию является переменная 5 . В этом случае ее и связку можно не писать.
$ =~ т/ регулярное выражение / модификаторы
эквивалентно
т/регулярное выражение / модификаторы
Если ограничителями являются слэши, то букву т также можно опустить.
Если регулярное выражение не задано, как в операторе
//
или задано в виде пустой или неопределенной переменной
/$emtyvar/
то в таком операторе в качестве регулярного выражения применяется последнее успешно использованное регулярное выражение во внешней области видимости. Сейчас в связи с появлением объектов регулярных выражений использование регулярного выражения по умолчанию потеряло смысл.
Заскакивая вперед, еще скажу, что регулярное выражение может быть также представлено объектом регулярного выражения
ту $ гe=q г/ 'регулярное выражение /;
$text =~ $ге;
или
$text =" /$ге/;
Оператор подстановки
$text =*? з/регулярное выражение / выражение для подстановки / модификаторы
отличается от оператора поиска тем, что имеет заменяющую часть. Кроме того, в операторе подстановки может применяться модификатор е, влекущий вычисление выражения для подстановки как код Perl. Модификатор е может быть использован многократно с многократной обработкой выражения для замены по правилам, аналогичным функции eval, перед тем как произвести замену.