Классификация регулярных выражений
Регулярные выражения — это специальные шаблоны, используемые для ука- зания строк, например, при поиске. Регулярные выражения строятся из обычных алфавитно-цифровых символов и метасимволов. Метасимволы по- зволяют адресоваться одновременно к одному или более обычным алфавит- но-цифровым символам.
По историческим причинам регулярные выражения подразделяются на:
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; просмотров: 566;