Регулярные выражения в Python: модуль re простыми словами с примерами
Если вы искали понятное руководство по запросу «регулярные выражения в Python re примеры» — вы по адресу. Ниже собраны базовые концепции, практические шаблоны и советы, которые помогут уверенно пользоваться модулем re уже сегодня.
Что такое регулярные выражения и когда их применять
Регулярные выражения — это язык шаблонов для поиска и преобразования текста. Они незаменимы, когда нужно:
Важно: для парсинга сложных форматов (например, HTML) лучше использовать специализированные парсеры. Регулярки — для гибких текстовых шаблонов.
Быстрый старт с модулем re
Подключение и базовые функции:
import re
text = "Python 3.12 выпущен!"
# search: найти первое совпадение где угодно в строке
m = re.search(r"Python (d+.d+)", text)
if m:
print(m.group(1)) # 3.12
# match: начать поиск строго с начала строки
print(re.match(r"Python", text) is not None) # True
# findall: вернуть все совпадения списком строк/кортежей
print(re.findall(r"d+", text)) # ['3', '12']
# sub: замена по шаблону
print(re.sub(r"d+", "X", text)) # Python X.X выпущен!
# split: разбиение по регулярному выражению
print(re.split(r"s+", text)) # ['Python', '3.12', 'выпущен!']
В шаблонах используйте «сырые» строки r»…», чтобы не экранировать обратные слеши Python-строкой.
Основные элементы шаблонов re
import re
s = "Email: test.user@mail.com и test2@mail.ru"
# Группы и именованные группы
pat = r"(?P<name>[w.]+)@(?P<domain>[w.]+)"
for m in re.finditer(pat, s):
print(m.group("name"), m.group("domain"))
# test.user mail.com
# test2 mail.ru
# Жадность vs ленивость
html = "<div>one</div><div>two</div>"
print(re.findall(r"<div>.*</div>", html)) # жадно: один большой матч
print(re.findall(r"<div>.*?</div>", html)) # лениво: два отдельных
Полезные рецепты (copy-paste)
1) Извлечь все числа (целые и десятичные, с минусом)
import re
s = "Температуры: -3, 0, 12.5 и -7.25 градуса"
nums = re.findall(r"-?d+(?:.d+)?", s)
print(nums) # ['-3', '0', '12.5', '-7.25']
2) Простая валидация email
Подойдёт для базовой проверки, не для RFC-полной валидации.
import re
emails = ["test@mail.com", "bad@@mail", "x@y.z"]
pat = re.compile(r"^[w.+-]+@[w-]+.[A-Za-z]{2,}$")
for e in emails:
print(e, bool(pat.match(e)))
# test@mail.com True, bad@@mail False, x@y.z False
3) Разбить по нескольким разделителям (запятая, точка с запятой, пробелы)
import re
s = "one, two;three four"
parts = [p for p in re.split(r"[;,s]+", s) if p]
print(parts) # ['one', 'two', 'three', 'four']
4) Сжать подряд идущие пробелы до одного
import re
s = " Hello world ! "
print(re.sub(r"s+", " ", s).strip()) # Hello world !
5) Парсинг лога с именованными группами
import re
line = '127.0.0.1 - - [10/Feb/2026:10:24:42 +0000] "GET /index.html HTTP/1.1" 200 512'
pat = re.compile(
r"^(?P<ip>S+)s+S+s+S+s+[(?P<ts>[^]]+)]s+"(?P<method>S+)s+(?P<path>S+)s+HTTP/(?P<httpver>d+.d+)"s+(?P<code>d+)s+(?P<size>d+)"
)
m = pat.search(line)
print(m.groupdict())
# {'ip': '127.0.0.1', 'ts': '10/Feb/2026:10:24:42 +0000', 'method': 'GET', 'path': '/index.html', 'httpver': '1.1', 'code': '200', 'size': '512'}
6) Все слова, начинающиеся на «py», без учёта регистра
import re
text = "Python и pytest полезны, а pYramid — веб-фреймворк"
print(re.findall(r"bpyw*", text, flags=re.IGNORECASE))
# ['Python', 'pytest', 'pYramid']
Флаги re, которые стоит знать
import re
text = "FoonbarnBaz"
print(re.findall(r"^bw+", text, flags=re.I | re.M)) # ['bar', 'Baz']
pat = re.compile(r"""
^ # начало строки
(+7|8)s? # код страны
(?d{3})?s? # код города
d{3}-?d{2}-?d{2}$ # номер
""", flags=re.X)
print(bool(pat.match("+7 (495) 123-45-67"))) # True
Компиляция шаблонов: когда это нужно
Если одно и то же выражение используется много раз, выгодно скомпилировать его один раз.
import re
pat = re.compile(r"bw{3,}b")
texts = ["short", "some long text", "another line"]
for t in texts:
print(pat.findall(t))
Советы и лучшие практики
Хотите системно прокачать Python и закрепить практикой десятки подобных приёмов? Загляните в Пошаговый курс «Python с Нуля до Гуру» — там по полочкам разложены основы, задания и реальные мини‑проекты.
Короткая шпаргалка по re
# Функции
re.search(p, s) # первое совпадение
re.match(p, s) # с начала строки
re.findall(p, s) # список совпадений
re.finditer(p, s) # итератор совпадений
re.sub(p, rep, s) # замена
re.split(p, s) # разбиение
re.compile(p, flags=0) # компиляция
# Частые классы/якоря/квантификаторы
d w s ^ $ b * + ? {m,n} | ( ) (?: ) (?P<name> )
Итог
Регулярные выражения в Python — это компактный и очень мощный инструмент для повседневной работы с текстом. Освойте базовые классы символов, группы, квантификаторы и флаги — и вы сможете быстро решать задачи извлечения данных, валидации и замены в пару строк кода.




