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

Содержание

Слайд 2

Литература Марк Саммерфилд. Программирование на Python 3. (С. 525-552) https://docs.python.org/3/library/re.html http://www.rexegg.com/ https://habr.com/ru/post/349860/

Литература

Марк Саммерфилд. Программирование на Python 3. (С. 525-552)
https://docs.python.org/3/library/re.html
http://www.rexegg.com/
https://habr.com/ru/post/349860/

Слайд 3

Язык регулярных выражений в Python Модуль для работы с регулярными выражениями

Язык регулярных выражений в Python
Модуль для работы с регулярными выражениями

Слайд 4

Проблема! Тип Строки позволяет выполнять над строками различные операции, в том

Проблема!

Тип Строки позволяет выполнять над строками различные операции, в том числе поиск, замену, вставку

и удаление подстрок.
Но есть классы задач по обработке символьной информации, где стандартных возможностей явно не хватает: проверить текст на соответствие предопределенному шаблону (например, адресу электронной почты), поиск по шаблону pet*. ??? и др.
Слайд 5

Регулярное выражение – что это? Регулярное выражение - это компактная форма

Регулярное выражение – что это?

Регулярное выражение - это компактная форма записи

набора строк, отвечающих требованиям регулярного выражения.
Регулярное выражение - это текстовая строка, которая описывает шаблон, который используется механизмом регулярных выражений для поиска фрагмента текста (или позиций) в исходном тексте, как правило, для проверки, поиска, замены или разделения.
В состав Python входит модуль rе, с помощью которого можно создавать и использовать регулярные выражения.
Слайд 6


Слайд 7

Регулярное выражение – для чего? Проверка: проверка соответствия фрагментов текста некоторым

Регулярное выражение – для чего?

Проверка: проверка соответствия фрагментов текста некоторым критериям,

например, наличие символа обозначения валюты и последующих за ним цифр.
Поиск: поиск подстрок, которые могут иметь несколько форм,
например, поиск подстрок «pet.png», «pet.jpg», «pet.jpeg» или «pet.svg», чтобы при этом не обнаруживались подстроки «carpet. png» и подобные ей.
Слайд 8

Регулярное выражение – для чего? Поиск и замена: замена всего, что

Регулярное выражение – для чего?

Поиск и замена: замена всего, что совпадает

с регулярным выражением, и замена на указанную строку, например, поиск подстроки «устройство передвижения, движимое мускульной силой» и замена подстрокой «велосипед».
Разбиение строк: разбиение строки по точкам совпадения с регулярным выражением, например, разбиение строки по подстроке «: » или «=».
Слайд 9

Спецсимволы . ^ $ * + ? { } [ ]

Спецсимволы

. ^ $ * + ? { } [ ] \

| ( )
Для написания их просто как символов требуется их экранировать, для чего нужно поставить перед ними знак \.
Слайд 10

Осторожно - регулярные выражения! Использовать только там, где они действительно приносят

Осторожно - регулярные выражения!

Использовать только там, где они действительно приносят пользу,

а не вред. Плохо написанные регулярные выражения работают медленно.
Их сложно читать, особенно если регулярка написана не лично тобой пять минут назад.
Даже небольшое изменение задачи (того, что требуется найти) приводит к значительному изменению выражения.
Это write only code (код, который только пишут с нуля, но не читают и не правят). 
Слайд 11

Регулярные выражения: как? Регулярное выражение - это шаблон, по которому выполняется

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

Регулярное выражение - это шаблон, по которому выполняется поиск

соответствующего фрагмента текста.
Язык описания регулярных выражений состоит из символов двух видов: обычных символов и метасимволов.
Обычный символ представляет в выражении сам себя, а метасимвол - некоторый класс символов.
Слайд 12

Наиболее употребительные метасимволы:

Наиболее употребительные метасимволы:

Слайд 13

Примеры

Примеры

Слайд 14

УПРАВЛЯЮЩИЕ СИМВОЛЫ

УПРАВЛЯЮЩИЕ СИМВОЛЫ

Слайд 15

CHARACTER CLASSES

CHARACTER CLASSES

Слайд 16

Примеры

Примеры

Слайд 17

Уточняющие символы

Уточняющие символы

Слайд 18

Повторители или квантификаторы

Повторители или квантификаторы

Слайд 19

Про квантификаторы По умолчанию квантификаторы жадные — захватывают максимально возможное число

Про квантификаторы

По умолчанию квантификаторы жадные — захватывают максимально возможное число символов. Добавление ? делает их ленивыми, они захватывают минимально

возможное число символов.
Слайд 20

Слайд 21

Язык регулярных выражений в Python Модуль для работы с регулярными выражениями

Язык регулярных выражений в Python
Модуль для работы с регулярными выражениями

Слайд 22

pattern, string Два параметра в функциях модуля регулярных выражений re :

pattern, string

Два параметра в функциях модуля регулярных выражений re :
Шаблон регулярного

выражения для определения текста.
Текст, который будет проанализирован на соответствие шаблону регулярного выражения.
Слайд 23

Слайд 24

Слайд 25

Примеры регулярных выражений: Слово math math, «math» Номер телефона в формате

Примеры регулярных выражений:

Слово math math, «math»
Номер телефона в формате xxx-xx-xx

@"\d\d\d-\d\d-\d\d" или r"\d{3}(-\d\d){2}
3) Номер автомобиля - r"[A-Z]\d{3}[A-Z]{2}\d{2,3}RUS"
Слайд 26

Задание. Запишите регулярное выражение, соответствующее: дате в формате дд.мм.гг или дд.мм.гггг

Задание. Запишите регулярное выражение, соответствующее:

дате в формате дд.мм.гг или дд.мм.гггг
времени в

формате чч.мм или чч:мм
целому числу (со знаком и без)
вещественному числу (со знаком и без, с дробной частью и без, с целой частью и без)
Найдите все натуральные числа (возможно, окружённые буквами);
Найдите все «слова», написанные капсом (то есть строго заглавными), возможно внутри настоящих слов (аааБББввв);
Найдите слова, в которых есть русская буква, а когда-нибудь за ней цифра;
Найдите все слова, начинающиеся с русской или латинской большой буквы (\b — граница слова);
Найдите слова, которые начинаются на гласную (\b — граница слова).