Для приведенных категорий также не дан полный список возможных символов.
Таблица 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 и задающий опции, которые действуют при работе с данным объектом. Среди опций отмечу одну: ту, что позволяет компилировать регулярное выражение. В этом случае создается программа, которая и будет выполняться при каждом поиске соответствия. При разборе больших текстов скорость работы в этом случае существенно повышается.