Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
171
Добавлен:
17.04.2018
Размер:
32.16 Кб
Скачать

ЛАБОРАТОРНАЯ РАБОТА №5

По курсу «Интернет-программирование»

Регулярные выражения

Цель работы.

Ознакомиться со способами обработки текстов с помощью механизма регулярных выражений.

Приобретаемые компетенции:

  1. Понимание принципов работы регулярных выражений.

  2. Обработка текстовых данных с помощью регулярных выражений

  1. Принципы работы регулярных выражений

    1. История развития регулярных выражений

Регулярные выражения – это специальные правила создания шаблонов обработки строк. Шаблоны регулярных выражений позволяют производить сложный поиск (единичный и групповой) и замену подстрок. Исторически впервые регулярные выражения появились в 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 ) и это формат на сегодня считается самым развитым и на него ориентируются разработчики языков программирования при внедрении поддержки регулярных выражений в соответствующие языки.

    1. Принципы регулярных выражений

При работе регулярного выражения, заданный в нем шаблон сопоставляется со строкой текста и при совпадении из строки извлекаются и/или заменяются совпавшие фрагменты.

Для создания шаблонов используют метасиволы, которые обрабатываются не как обычные символы строки, а специальным образом.

Например, применение шаблона вида ([0-9]+) к строке we435we вернет 435 т. к. конструкция ([0-9]+) “в переводе” означает - взять только подряд идущие числа.

Общее число метасимволов — невелико: .([{\^-$|]})?*+

Однако, их комбинации позволяют создавать очень сложные шаблоны.

Если в строке требуется найти символы, совпадающие с метасимволами, то применяется экранирование метасимволов по одному из двух способов:

1. Использовать обратную косую черту перед символом. Например \. обозначает точку.

2. Заключить символы между \Q и \E

  1. Конструкции шаблонов регулярных выражений

    1. Классы символов (диапазоны)

Класс символов – набор символов в [ ], определяющий сопоставление одного символа в интерпретируемой строке.

Классы символов Таблица 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

Соседние файлы в папке Интернет технологии