Классификация регулярных выражений
Регулярные выражения — это специальные шаблоны, используемые для ука- зания строк, например, при поиске. Регулярные выражения строятся из обычных алфавитно-цифровых символов и метасимволов. Метасимволы по- зволяют адресоваться одновременно к одному или более обычным алфавит- но-цифровым символам.
По историческим причинам регулярные выражения подразделяются на:
r обычные регулярные выражения (basic regexp);
r регулярные выражения с расширенным синтаксисом (extended regexp).
Не все текстовые утилиты, работающие с регулярными выражениями, под- держивают расширенный синтаксис регулярных выражений.
Метасимволы, составляющие регулярные выражения, представлены двумя классами: шаблонами и квантификаторами.
Шаблоны — специальные символы, заменяющие один или более обычных символов.
Квантификаторы — указатели количества вхождений символа или набора сим- волов, находящихся в регулярном выражении непосредственно перед ними.
То есть шаблоны указывают на то, что должно находиться в данном месте искомой строки, а квантификаторы — сколько раз оно должно там встре- чаться.
В табл. 9.1 приведены наиболее общеупотребительные регулярные выражения.
Таблица 9.1. Регулярные выражения
| Метасим- вол | Класс | Расширен- ный | Описание |
| ^ | Шаблон | Начало строки | |
| $ | Шаблон | Конец строки | |
| \< | Шаблон | * | Начало слова |
| \> | Шаблон | * | Конец слова |
| . | Шаблон | Любой символ, включая пробел | |
| [] | Шаблон | Набор символов | |
| () | Шаблон | * | Группировка символов |
| | | Шаблон | * | Инфиксный оператор (или) |
| * | Квантификатор | Вхождение любое количество раз | |
| + | Квантификатор | * | Вхождение не менее одного раза |
| ? | Квантификатор | * | Вхождение не более одного раза |
| {n} | Квантификатор | * | Вхождение n раз |
| {n,} | Квантификатор | * | Вхождение не менее n раз |
| {n,m} | Квантификатор | * | Вхождение от n до m раз |
Помимо перечисленных регулярных выражений имеется несколько расши- ренных их наборов. Например, в языке Perl используется больше регулярных выражений.
Множества символов, задаваемые в квадратных скобках, имеют следующий смысл: в данном месте должен находиться один любой символ из входящих во множество. Например, множество [0-3] включает в себя все числа от нуля до трех, а регулярному выражению ^[0-3]$ удовлетворяют все строки, в ко- торых находится единственный символ — число от нуля до трех (^ — начало строки, $ — конец строки).
Помимо множеств, заданных с помощью перечисления символов в квадрат- ных скобках, существуют заранее определенные классы символов, приведен- ные в табл. 9.2.
Таблица 9.2. Заранее определенные множества символов
| Класс | Значение |
| [:alnum:] | Множество алфавитно-цифровых символов |
| [:alpha:] | Алфавитные символы |
| [:blank:] | Пустые символы — пробел и табуляция |
| [:cntrl:] | Символы с восьмеричными кодами от 000 до 037 и 177 |
| [:digit:] | Десятичные цифры |
| [:graph:] | Изображаемые символы: алфавитно-цифровые и пунктуация |
| [:lower:] | Буквы в нижнем регистре |
| [:print:] | Печатаемые символы: алфавитно-цифровые, пробел и пунктуация |
| [:space:] | Табуляция, вертикальная табуляция, пробел, перевод строки |
| [:upper:] | Буквы в верхнем регистре |
| [:xdigit:] | Шестнадцатеричные символы |
Дата добавления: 2015-06-12; просмотров: 624;
