
- •По курсу «Интернет-программирование»
- •Принципы работы регулярных выражений
- •История развития регулярных выражений
- •Принципы регулярных выражений
- •Конструкции шаблонов регулярных выражений
- •Классы символов (диапазоны)
- •Квантификаторы (повторения)
- •Граничные метасимволы
- •Перечисления
- •Группировки
- •Утверждения
- •Условные подвыражения
- •Реализация регулярных выражений в языках программирования
- •Примеры
ЛАБОРАТОРНАЯ РАБОТА №5
По курсу «Интернет-программирование»
Регулярные выражения
Цель работы.
Ознакомиться со способами обработки текстов с помощью механизма регулярных выражений.
Приобретаемые компетенции:
Понимание принципов работы регулярных выражений.
Обработка текстовых данных с помощью регулярных выражений
Принципы работы регулярных выражений
История развития регулярных выражений
Регулярные выражения – это специальные правила создания шаблонов обработки строк. Шаблоны регулярных выражений позволяют производить сложный поиск (единичный и групповой) и замену подстрок. Исторически впервые регулярные выражения появились в UNIX в формате BRE POSIX UNIX (BRE — Basic Regular Expressions). Этот формат затем был расширен до ERE POSIX UNIX (ERE — Extended Regular Expressions) с добавлением новых возможностей. В 1997 году формат был расширен до
PCRE - (Perl Compatible Regular Expressions см. https://ru.wikipedia.org/wiki/PCRE ) и это формат на сегодня считается самым развитым и на него ориентируются разработчики языков программирования при внедрении поддержки регулярных выражений в соответствующие языки.
Принципы регулярных выражений
При работе регулярного выражения, заданный в нем шаблон сопоставляется со строкой текста и при совпадении из строки извлекаются и/или заменяются совпавшие фрагменты.
Для создания шаблонов используют метасиволы, которые обрабатываются не как обычные символы строки, а специальным образом.
Например, применение шаблона вида ([0-9]+) к строке we435we вернет 435 т. к. конструкция ([0-9]+) “в переводе” означает - взять только подряд идущие числа.
Общее число метасимволов — невелико: .([{\^-$|]})?*+
Однако, их комбинации позволяют создавать очень сложные шаблоны.
Если в строке требуется найти символы, совпадающие с метасимволами, то применяется экранирование метасимволов по одному из двух способов:
1. Использовать обратную косую черту перед символом. Например \. обозначает точку.
2. Заключить символы между \Q и \E
Конструкции шаблонов регулярных выражений
Классы символов (диапазоны)
Класс символов – набор символов в [ ], определяющий сопоставление одного символа в интерпретируемой строке.
Классы символов Таблица 1
[abc] a,
b или c (простой класс) [^abc] Любой
символ кроме a,b или с (отрицание) [a-z] все
символы от а до z (диапазон) [a-d[m-p]] все
символы от a до d и от m до p (объединение).
Аналогично [a-dm-p] [a-z&&[def]] d,e
или f (пересечение) [a-z&&[^bc]] от
a до z кроме b и c (вычитание). Аналогично
[ad-z] [a-z&&[^m-p]] от
a до z и не от m до p (вычитание). Аналогично
[a-lq-z]
Предопределенные классы - короткая запись часто употребляемых классов символов.
Предопределенные классы Таблица 2
. Любой
символ \d Цифра,
[0-9] \D Не
цифра, [^0-9] \s Пробельный
символ, [ \t\n\x0B\f\r] \S Не
пробельный символ, [^\s] \w Символ
слова [a-zA-Z_0-9] \W Не
символ слова [^\w]
Примеры использования классов символов
шаблон a[b-z]\s
строка ab ac aa ad
Найден текст ab позиция старта 0 позиция окончания 3
Найден текст ac позиция старта 3 позиция окончания 6
шаблон [a-z&&[def]]
строка abc abcd cdef
Найден текст d позиция старта 7 позиция окончания 8
Найден текст d позиция старта 10 позиция окончания 11
Найден текст e позиция старта 11 позиция окончания 12
Найден текст f позиция старта 12 позиция окончания 13
шаблон [a-z&&[^bc]]+\s
строка abc aef zcz uee
Найден текст aef позиция старта 4 позиция окончания 8
Найден текст z позиция старта 10 позиция окончания 12