- •Министерство образования и науки российской федерации
- •Обработка текстов с использованием регулярных выражений
- •305040, Г.Курск, ул. 50 лет Октября, 94. Содержание
- •Введение
- •1. Цель работы
- •2. Необходимое программное обеспечение
- •3. Теоретическая часть
- •3.1. Зачем нужны регулярные выражения
- •3.2. Регулярные выражения: что это такое?
- •3.3. Синтаксис регулярных выражений
- •3.3.1. Метасимволы
- •Значения метасимволов
- •Последовательности метасимволов
- •3.3.2. Символьные классы
- •3.3.3. Квантификаторы
- •Квантификаторы
- •3.3.4. О квантификаторах: жадных и ленивых
- •«Жадные» и «ленивые» варианты квантификаторов
- •3.3.6. Обратные ссылки
- •3.3.7. Модификаторы
- •Модификаторы
- •3.4. Как оно всё работает
- •3.5. Чего не умеют регулярные выражения
- •4. Использование библиотеки RegExpr
- •4.1. Как делается поиск подстрок
- •4.2. Как делается поиск и замена
- •5. Порядок выполнения работы
- •6. Содержание отчета
- •7. Контрольные вопросы
- •Библиографический список
- •Варианты заданий
3.3. Синтаксис регулярных выражений
Далее под «регулярным выражением» будем понимать шаблон поиска подстрок, записанный по определенным синтаксическим правилам.
3.3.1. Метасимволы
В состав регулярного выражения входят символы и метасимволы. Простой символ представляет сам себя (например, буква а). Метасимволы (wildcard characters) – это специальные символы, которые используются для обозначения других символов или их последовательностей. К метасимволам относятся:
[ ] \ ^ $ . | ? * + ( ) { }
Если в регулярном выражении метасимвол должен восприниматься как обычный символ (то есть без интерпретации), то перед ним ставится обратная косая черта \ (этот приём называется экранированием). Например, чтобы представить символ «точка», надо писать \. (обратная косая черта, а за ней - точка). Сам метасимвол \ тоже может быть экранирован, то есть представлен как \\ (две обратных косых черты).
Таблица 1
Значения метасимволов
Метасимвол |
Интерпретация |
\ |
Экранирующий символ |
. |
любой символ |
^ |
1) начало строки 2) исключение (при использовании ^ внутри квадратных скобок после него указываются символы, которые не должны встречаться) |
$ |
конец строки |
[ ] |
скобки для задания символьного класса |
( ) |
скобки для задания группировки |
{ } |
скобки для задания квантификаторов |
| |
разделитель альтернатив |
* |
повторение предыдущего символа 0 и более раз |
+ |
повторение предыдущего символа 1 и более раз |
? |
повторение предыдущего символа 0 или 1 раз |
Примеры:
Сами регулярные выражения (шаблоны) здесь и далее будем записывать в одинарных апострофах, а строки – в двойных кавычках.
Шаблону ‘o.d’ будут соответствовать “oad”, “obd”, “o9d”. Здесь точка обозначает «любой символ».
При использовании точки в качестве обычного символа, ее нужно экранировать. Шаблон поиска ‘fil.\.txt’ найдет имена “file.txt”, “fil2.txt”. Первая точка в шаблоне воспринимается как метасимвол «любой символ», а экранированная точка \. как обычный символ.
Метасимвол ^ означает начало строки. Поиск по шаблону ‘^the’ в строке “the flower on the table” найдет только вхождение the, приходящееся на начало строки (подчеркнуто).
Шаблон ‘zo*’ содержит метасимвол *, означающий повторение предыдущего символа (то есть буквы «о») 0 и более раз. Будут найдены строки “z”, “zo”, “zoo”, “zooo”.
Если нужно повторить несколько символов, их группируют в круглых скобках: шаблон ‘a(bc)*d’ найдет строки “ad”, “abcd”, “abcbcd”.
Метасимвол + заставляет повторять строку 1 и более раз, поэтому шаблон ‘a(bc)+d’ найдет строки “abcd”, “abcbcd”.
Метасимвол ? означает повторение предыдущего символа 0 или 1 раз. Поиск по шаблону ‘ca(bine)?t’ даст строки “cat” и “cabinet”.
Метасимвол | используется для разделения альтернатив (вариантов выбора). При этом совпадение зачитывается, когда есть совпадение хотя бы с одним вариантом. Желательно альтернативы заключать внутрь группировки (в круглые скобки). Шаблон ‘boo(k|st|t)’ найдет строки “book”,“boost”,“boot”. ■
Кроме того, в регулярных выражениях допускается применять последовательности метасимволов (таблица 2).
Таблица 2