≪
≫

Лекция 5. Практическое использование операторов т// и s///

В настоящей лекции рассматриваются поиск отдельных слов, нечувствительных к регистру совпадений, привязка к началу и концу строки и текста, поиск п-го совпадения, поиск множественных совпадений, применение якорей и заглядывания вперед и назад, альтернативных и условных шаблонов, а также вызов функций и вычисление выражений при подстановке текста, модификатор е.

Ключевые слова: perl, шаблон, подшаблон, класс символов, диапазон символов, метасимвол, эскейп-последовательность. обратная ссылка, альтернативный шаблон, квантификатор, минимальный квантификатор, числитель, повторитель, мнимый символ, якорь, модификатор, захватывающие скобки, незахватывающие скобки, сохраняющие скобки, нумерованная переменная, регулярное выражение.

Поиск отдельных слов

В регулярных выражениях словом называется последовательность символов и’. В множество в’ входят все строчные и прописные латинские буквы, десятичные цифры и знак подчерка: [azAZ09_}. К этому множеству относятся все символы, считающиеся буквами в той локальной установке, которая используется. Для ActiveState Per) под Windows для этого достаточно написать директиву

use locale;

и все русские буквы (включая буквы ё и Ё) в кодировке Windows-1251 также будут считаться буквами.

Если вы под буквами понимаете что-то другое (например, вы не считаете символ подчерка за букву), то определите соответствующий класс. Если вас интересуют все непробельные символы, то используйте эскейп-последовательность 5.

Эскейп-последовательность и; соответствует ровно одной «букве». Для слов применяйте шаблон w+. Слово всегда ограничено с обеих сторон мнимыми символами /> — границами слов. Действие этих якорей также зависит от локальной установки операционной системы. Для гарантии того, что совпадение со словом начнется и закончится на его границе, можно применять шаблон w+. Чтобы уничтожить ненужные сохраненные состояния, можно также использовать атомарную группировку'. (?>w+).

В Per) мнимые символы, которые соответствуют началу слова и его концу, не различаются — оба обозначаются как Ь. В некоторых языках программирования для этих символов существуют отдельные якоря. Но можно самому определить такие мнимые символы, исходя из их смысла. Вот якорь, который соответствует началу слова:

(?

Слева нет буквы, а справа она есть.

А вот якорь, который соответствует концу слова:

(?<=w)(?!w)

Слева есть буква, а справа буквы нет.

Я надеюсь, вы уже понимаете разницу между7 выражениями (?Ди9 и (?=№). В первом случае справа может и ничего не стоять (конец текста), а второй случай требует, чтобы справа стоял символ, который не является буквой.

 
Посмотреть оригинал