Регулярные выражения
Регулярные выражения (regular expressions, или regex) — это мощный инструмент для работы с текстом, который позволяет искать, сопоставлять и заменять подстроки по определённым шаблонам. В Python для работы с регулярными выражениями используется модуль re.
Основные функции модуля re
re.search()— ищет первое совпадение с шаблоном в строке.re.match()— ищет совпадение с шаблоном только в начале строки.re.findall()— возвращает все совпадения с шаблоном в виде списка.re.finditer()— возвращает итератор с объектами совпадений.re.sub()— заменяет все совпадения с шаблоном на указанную строку.re.split()— разбивает строку по шаблону.
Основные элементы регулярных выражений
.— любой символ, кроме новой строки.\d— любая цифра ([0-9]).\D— любой символ, кроме цифры.\w— любая буква, цифра или нижнее подчёркивание ([a-zA-Z0-9_]).\W— любой символ, кроме букв, цифр и нижнего подчёркивания.\s— любой пробельный символ (пробел, табуляция, новая строка).\S— любой символ, кроме пробельных.[]— набор символов. Например,[a-z]— любая строчная буква.^— начало строки.$— конец строки.*— 0 или более повторений.+— 1 или более повторений.?— 0 или 1 повторение.{n}— ровноnповторений.{n, m}— отnдоmповторений.|— логическое "или". Например,a|b—aилиb.
Примеры использования
Поиск совпадений с помощью re.search()
re.search()ищет первое совпадение с шаблоном в строке.Шаблон
r"\+\d-\d{3}-\d{3}-\d{2}-\d{2}":\+— символ+(экранирован, так как+имеет специальное значение в regex).\d— любая цифра.-— символ дефиса.\d{3}— ровно 3 цифры.
match.group()возвращает найденное совпадение.Если совпадение найдено, выводится номер телефона.
Поиск всех совпадений с помощью re.findall()
re.findall()возвращает все совпадения с шаблоном в виде списка.Шаблон
r"\$\d+":\$— символ$(экранирован, так как$имеет специальное значение в regex).\d+— одна или более цифр.
Результат — список всех цен в тексте.
Замена с помощью re.sub()
re.sub()заменяет все совпадения с шаблоном на указанную строку.Шаблон
r"\d{2}\.\d{2}\.\d{4}":\d{2}— ровно 2 цифры (день или месяц).\.— символ точки (экранирован, так как.имеет специальное значение в regex).\d{4}— ровно 4 цифры (год).
Все даты в тексте заменяются на
ДД.ММ.ГГГГ.
Разделение строки с помощью re.split()
re.split()разбивает строку по шаблону.Шаблон
r"[ ,;:]":[ ,;:]— любой из символов: пробел, запятая, точка с запятой или двоеточие.
Результат — список слов, разделённых указанными символами.
Использование групп ()
Группы
()позволяют извлекать части совпадений.Шаблон
r"Имя: (\w+), Возраст: (\d+)":(\w+)— группа для имени (одна или более букв/цифр).(\d+)— группа для возраста (одна или более цифр).
match.group(1)возвращает первую группу (имя),match.group(2)— вторую (возраст).
Использование re.match()
re.match()ищет совпадение только в начале строки.Шаблон
r"Python":Ищет слово "Python" в начале строки.
Если совпадение найдено, выводится результат.
Использование re.finditer()
re.finditer()возвращает итератор с объектами совпадений.Шаблон
r"\$\d+":Ищет цены в формате
$+ цифры.
Каждое совпадение обрабатывается в цикле.
Валидация email с помощью регулярных выражений
Шаблон
r"^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$":^— начало строки.[a-zA-Z0-9_.+-]+— имя email (буквы, цифры, символы_,.,+,-).@— символ "@".[a-zA-Z0-9-]+— домен (буквы, цифры, дефисы).\.— точка перед доменной зоной.[a-zA-Z0-9-.]+$— доменная зона (буквы, цифры, точки, дефисы).
re.match()проверяет, соответствует ли строка шаблону.
Извлечение всех хэштегов из текста
Шаблон
r"#\w+":#— символ хэштега.\w+— одна или более букв/цифр.
re.findall()извлекает все хэштеги из текста.
Замена всех чисел в тексте
Шаблон
r"\d+":\d+— одна или более цифр.
re.sub()заменяет все числа наN.
Регулярные выражения, непростая и очень интересная тема.
В этой лекции каждый пример демонстрирует возможности регулярных выражений для решения конкретных задач: поиск, замена, извлечение данных, валидация.
Регулярные выражения — это мощный инструмент, который требует практики для эффективного использования.