- •Министерство образования и науки российской федерации
 - •Обработка текстов с использованием регулярных выражений
 - •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
