Регулярные выражения — сложная, но необходимая тема для любого программиста. Этот урок, первая часть из двух, посвящён знакомству с основами работы с регулярными выражениями в Python. Рассмотрим основные методы и примеры их использования, отложив более сложные аспекты на следующий урок.
Что такое регулярные выражения?
Регулярное выражение — это строка, задающая шаблон поиска подстрок в тексте. Один шаблон может соответствовать множеству различных подстрок. Проще говоря, это шаблон для поиска.
Например, нужно найти количество упоминаний фамилии «Онегин» в тексте романа «Евгений Онегин». Регулярные выражения позволяют легко выполнить этот поиск, определяя шаблон «Онегин» и находя все его вхождения в тексте.
Любая строка или набор специальных командных последовательностей может быть регулярным выражением. Более сложные последовательности и команды рассмотрим во второй части урока.
Модуль re в Python
В Python для работы с регулярными выражениями используется модуль re, поставляемый вместе с интерпретатором. Его нужно импортировать в программу:
import re
Строка для примеров:
text = "сисидисидисидиси"
Основные методы модуля re
Рассмотрим основные методы модуля re на примерах:
match()
Метод match() ищет совпадение с заданным шаблоном только в начале строки.
result = re.match("сиси", text)
print(result) # Выведет объект match, если совпадение найдено в начале строки
Если шаблон не находится в начале строки, метод вернет None.
result = re.match("диси", text)
print(result) # Выведет None
search()
Метод search() ищет совпадение с заданным шаблоном в всей строке и возвращает первое найденное совпадение.
result = re.search("диси", text)
print(result) # Выведет объект match с информацией о первом найденном совпадении
print(result.span()) # Выведет кортеж с начальной и конечной позицией совпадения
print(result.group(0)) # Выведет найденную подстроку
findall()
Метод findall() ищет все совпадения с заданным шаблоном и возвращает их в виде списка.
result = re.findall("диси", text)
print(result) # Выведет список всех найденных совпадений
split()
Метод split() разделяет строку на список подстрок по заданному шаблону.
result = re.split("си", text)
print(result) # Разделит строку по каждому вхождению "си"
Третий аргумент maxsplit ограничивает количество разбиений.
result = re.split("си", text, maxsplit=2)
print(result) # Разделит строку только два раза
sub()
Метод sub() заменяет все совпадения шаблона на указанную подстроку.
result = re.sub("и", "Д", text)
print(result) # Заменит все "и" на "Д"
fullmatch()
Метод fullmatch() проверяет, совпадает ли весь шаблон со всей строкой.
result = re.fullmatch("сисидисидисидиси", text)
print(result) # Вернет объект match, если строка полностью совпадает с шаблоном
Применение регулярных выражений
Регулярные выражения применяются в различных задачах:
- Извлечение телефонных номеров из текста.
- Поиск и замена текста в больших документах.
- Парсинг данных из веб-страниц.
- Обработка текстовых файлов.
В этом уроке мы познакомились с основными методами модуля re для работы с регулярными выражениями в Python. Во второй части рассмотрим более сложные аспекты построения шаблонов и применения регулярных выражений для решения различных задач.