- •Министерство образования и науки российской федерации
- •Обработка текстов с использованием регулярных выражений
- •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. Контрольные вопросы
- •Библиографический список
- •Варианты заданий
Последовательности метасимволов
|
Последова-тельность метасимволов |
Интерпретация |
|
\A |
начало текста |
|
\Z |
конец текста |
|
\xnn |
символ с шестнадцатеричным кодом nn |
|
\x{nnnn} |
символ с шестнадцатеричным кодом nnnn (более одного байта можно задавать только в режиме Unicode) |
|
\t |
табуляция (TAB), можно также \x09 |
|
\n |
переход на новую строку (NL), можно также \x0a |
|
\r |
возврат каретки (CR), можно также \x0d |
|
\f |
перевод формата, можно также \x0c |
|
\a |
звонок (BEL), можно также \x07 |
|
\e |
escape (ESC), можно также \x1b |
|
\d |
цифровой символ [0-9] |
|
\D |
все символы, кроме цифр 0-9, т.е. класс [^0-9] |
|
\w |
буквенно-цифровой символ [a-zA-Z_0-9] |
|
\W |
все символы, кроме буквенно-цифровых, т.е класс [^a-zA-Z_0-9] |
|
\s |
любой пробельный символ [пробел, \t\n\r\f] |
|
\S |
все символы, кроме пробельных [^\x20\t\n\r\f] |
Примеры:
Шаблон ‘\d+’ описывает последовательность одной и более цифр (целое число).
Шаблон ‘–?\d+\.\d+’ описывает вещественное число с необязательным знаком минус впереди. Целая и дробная части разделяются точкой. ■
3.3.2. Символьные классы
Символьный класс – это конечный набор (множество) символов. Класс записывается в квадратных скобках [ ] и содержит перечисление символов, каждый из которых можно подставить в строку в этом месте. Например, класс [abcd] означает выбор любой из букв a|b|c|d. Конструкция 'б[аи]ржа' соответствует словам «баржа» и «биржа». При задании классов можно использовать – (дефис) для указания диапазонов символов. Пробелы (для красоты) в символьных классах не ставятся, т.к. пробел означает сам себя.
Примеры символьных классов:
[абвгде] // простое перечисление символов
[а-яА-Я] // все русские буквы, большие и маленькие
[0-9a-z] // цифры и строчная латиница
[\x0a-\x0d] // символы с кодами #10, #11, #12, #13.
Если необходимо включить в перечень сам символ "–'', нужно поместить его в начало или конец перечня или экранировать знаком '\'. Если необходимо поместить в перечень символ ']', то его следует поместить в самое начало или экранировать '\'.
Примеры:
[-az] или [az-] или [a\-z] // символы '-', 'a', 'z'
[a-z] // все малые латинские буквы от ‘а’ до ‘z’.
[]-a] или [\]-a] // символы от скобки ']' до буквы 'a'.
Кстати, метасимволы \d, \w, \s из таблицы 2 обозначают стандартные символьные классы.
При задании символьных классов можно указать символы, которых не должно быть в найденной подстроке. Для этого первым символом (сразу после "['') должен быть ^ а после него пишутся запрещенные символы. Так, '[^1-6]' находит все символы (из 256 возможных с кодами 0 … 255), кроме символов цифр от “1” до “6”.
Примеры:
Шаблон ‘ [а-яА-Я]+’ задает последовательность русских букв.
Шаблон ‘_?[a-zA-Z][_0-9a-zA-Z]*’ анализирует «правильный» идентификатор языка программирования (он начинается с подчеркивания или латинской буквы, за которыми идет последовательность буквенно-цифровых символов или подчеркиваний.
Шаблон ‘«[^»]*»’ находит строку символов в кавычках «». ■
