Главная страница
Случайная страница
КАТЕГОРИИ:
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
Синтаксис регулярных выражений
Регулярное выражение на C# задается строковой константой. Это может быть обычная или @-константа. Чаще всего, следует использовать именно @-константу. Дело в том, что символ " \" широко применяется в регулярных выражениях как для записи escape-последовательностей, так и в других ситуациях. Обычные константы в таких случаях будут выдавать синтаксическую ошибку, а @-константы не выдают ошибок и корректно интерпретируют запись регулярного выражения.
Синтаксис регулярного выражения простой формулой не описать, здесь используются набор разнообразных средств:
- символы и escape-последовательности;
- символы операций и символы, обозначающие специальные классы множеств;
- имена групп и обратные ссылки;
- символы утверждений и другие средства.
Конечно, регулярное выражение может быть совсем простым, например, строка " abc" задает образец поиска, так что при вызове соответствующего метода будут разыскиваться одно или все вхождения подстроки " abc" в искомую строку. Но могут существовать и очень сложно устроенные регулярные выражения. Приведу таблицу, (15.1) в которой дается интерпретация символов в соответствии с их делением на группы. Таблица не полна, в ней отражаются не все группы, а описание группы не содержит всех символов. Она позволяет дать общее представление о синтаксисе, которое будет дополнено большим числом примеров. За деталями придется обращаться к справочной системе, которая, к сожалению, далеко не идеальна для данного раздела.
Повторяю, данная таблица не полна. В ней не отражены, например, такие категории, как подстановки, обратные ссылки, утверждения.
Для приведенных категорий также не дан полный список возможных символов.
Таблица 15.1. Символы, используемые в регулярных выражениях
| Символ
| Интерпретация
| | Категория: escape-последовательности
| \b
| При использовании его в квадратных скобках соответствует имволу " обратная косая черта" с кодом - \u0008
| \t
| Соответствует символу табуляции \u0009
| \r
| Соответствует символу возврата каретки \u000D
| \n
| Соответствует символу новой строки \u000A
| \e
| Соответствует символу escape \u001B
| \040
| Соответствует символу ASCII, заданному кодом до трех цифр в восьмеричной системе
| \x20
| Соответствует символу ASCII, заданному кодом из двух цифр в шестнадцатиричной системе
| \u0020
| Соответствует символу Unicode, заданному кодом из четырех цифр в шестнадцатиричной системе
| | Категория: подмножества (классы) символов
| .
| Соответствует любому символу, за исключением символа конца строки
| [aeiou]
| Соответствует любому символу из множества, заданного в квадратных скобках
| [^aeiou]
| Отрицание. Соответствует любому символу, за исключением символов, заданных в квадратных скобках
| [0-9a-fA-F]
| Задание диапазона символов, упорядоченных по коду. Так, 0-9 задает любую цифру
| \p{name}
| Соответствует любому символу, заданному множеству с именем name, например, имя Ll задает множество букв латиницы в нижнем регистре. Поскольку все символы разбиты на подмножества, задаваемые категорией 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. Например, (? < tel> \d{7}). При обнаружении последовательности из семи цифр будет создана группа с именем tel
| ()
| Круглые скобки разбивают регулярное выражение на группы. Для каждого подвыражения, заключенного в круглые скобки, создается группа, автоматически получающая номер. Номера следуют в обратном порядке, поэтому полному регулярному выражению соответствует группа с номером 0
| (? imnsx)
| Включает или выключает в группе любую из пяти возможных опций. Для выключения опции перед ней ставится знак минус. Например, (? i-s:) включает опцию i, задающую нечувствительность к регистру, и выключает опцию s - статус single-line
|
|