Выбрать главу

Для приведенных категорий также не дан полный список возможных символов.

Таблица 15.1. Символы, используемые в регулярных выражениях

Символ ∙ Интерпретация

Категория: escape-последовательности

\b ∙ При использовании его в квадратных скобках соответствует символу "обратная косая черта" с кодом — \u0008

\t ∙ Соответствует символу табуляции \u0009

\r ∙ Соответствует символу возврата каретки \u000D

\n ∙ Соответствует символу новой строки \u000A

∙ Соответствует символу escape \u001B

\40 ∙ Cоответствует символу ASCII, заданному кодом до трех цифр в восьмеричной системе

\х20 ∙ Cоответствует символу ASCII, заданному кодом из двух цифр в шестнадцатиричной системе

\u0020 ∙ Cоответствует символу Unicode, заданному кодом из четырех цифр в шестнадцатиричной системе

Категория: подмножества (классы) символов

. ∙ Соответствует любому символу, за исключением символа конца строки

[aeiou] ∙ Соответствует любому символу из множества, заданного в квадратных скобках

[^аеiоu] ∙ Отрицание. Соответствует любому символу, за исключением символов, заданных в квадратных скобках

[o-9a-fA-F] ∙ Задание диапазона символов, упорядоченных по коду. Так, 0–9 задает любую цифру

\р{name} ∙ Соответствует любому символу, заданному множеству с именем name, например, имя L1 задает множество букв латиницы в нижнем регистре. Поскольку все символы разбиты на подмножества, задаваемые категорией Unicode, то в качестве имени можно задавать имя категории

\P{name} ∙ Отрицание. Большая буква всегда задает отрицание множества, заданного малой буквой

\w ∙ Множество символов, используемых при задании идентификаторов — большие и малые символы латиницы, цифры и знак подчеркивания

\s ∙ Соответствует символам белого пробела

\d ∙ Соответствует любому символу из множества цифр

Категория: Операции (модификаторы)

* ∙ Итерация. Задает ноль или более соответствий; например, \w* или

(abc)*. ∙ Аналогично, {0,}

+ ∙ Положительная итерация. Задает одно или более соответствий; например, \w+ или (abc)+. Аналогично, {1,}

? ∙ Задает ноль или одно соответствие; например, \w? или (abc)?. Аналогично, {0,1}

{n} ∙ Задает в точности n соответствий; например, \w{2}

{n,} ∙ Задает, по меньшей мере, n соответствий; например, (abc) {2, }

{n,m} ∙ Задает, по меньшей мере, n, но не более m соответствий; например, (abc) {2,5}

Категория: Группирование

(?<Name>) ∙ При обнаружении соответствия выражению, заданному в круглых скобках, создается именованная группа, которой дается имя Name. Например, (?<tei> \d{7}). При обнаружении последовательности из семи цифр будет создана группа с именем tel

() ∙ Круглые скобки разбивают регулярное выражение на группы. Для каждого подвыражения, заключенного в круглые скобки, создается группа, автоматически получающая номер. Номера следуют в обратном порядке, поэтому полному регулярному выражению соответствует группа с номером 0

(?imnsx) ∙ Включает или выключает в группе любую из пяти возможных опций. Для выключения опции перед ней ставится знак минус. Например, (?i-s:) включает опцию i, задающую нечувствительность к регистру, и выключает опцию s — статус single-line

Знакомство с классами пространства RegularExpressions

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

Класс Regex

Это основной класс, всегда создаваемый при работе с регулярными выражениями. Объекты этого класса определяют регулярные выражения. Конструктор класса, как обычно, перегружен. В простейшем варианте ему передается в качестве параметра строка, задающая регулярное выражение. В других вариантах конструктора ему может быть передан объект, принадлежащий перечислению RegexOptions и задающий опции, которые действуют при работе с данным объектом. Среди опций отмечу одну: ту, что позволяет компилировать регулярное выражение. В этом случае создается программа, которая и будет выполняться при каждом поиске соответствия. При разборе больших текстов скорость работы в этом случае существенно повышается.