Статья Автор: Деникина Н.В., Деникин А.В.

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

01 Проблема

Файл с 10 000 строк. Нужно найти все телефонные номера. Как?

❌ Вручную

Листать и искать глазами.
Часы работы, легко пропустить.

❌ Ctrl+F

Номера разные: 89161234567,
8-916-123-45-67, +7(916)999-88-77

✅ Регулярные выражения Один шаблон находит ВСЕ номера за секунду!
Попробуй · первая регулярка
Текст
Паттерн (регулярка)
Результат подсветки
 
findall()
 
import re

text = """Продажи: 89161234567
Бухгалтерия: 8-495-123-45-67
Директор: +7(916)999-88-77"""

phones = re.findall(r'[\d\-\+\(\)]{10,}', text)
print(phones)
# ['89161234567', '8-495-123-45-67', '+7(916)999-88-77']

02 Что такое регулярное выражение?

Регулярное выражение (regex) — шаблон для поиска текста. Как рецепт: описывает ЧТО искать, а не перечисляет все варианты.

Задача Ctrl+F Regex
Найти «кот» кот
Найти «кот» или «кит» ❌ два поиска к[ои]т
Найти любое число ❌ невозможно \d+
Найти email ❌ невозможно \w+@\w+\.\w+
Попробуй · regex vs обычный поиск
Текст
Паттерн
 
 

💡 Попробуй: к.от, \d+, \w+@\w+\.\w+


03 Модуль re

Для работы с регулярками в Python используется встроенный модуль:

import re  # Эту строку пишем в начале программы

04 Raw-строки r'...'

Всегда пиши регулярки с буквой r перед кавычками:

# ✅ ПРАВИЛЬНО — raw-строка
pattern = r'\d+'

# ❌ НЕПРАВИЛЬНО — обычная строка
pattern = '\d+'  # Может работать неправильно!
⚠️ Почему raw-строки? В обычных строках \ — спецсимвол (\n = перенос строки). В raw-строках \ остаётся просто символом. Без r Python может «съесть» обратный слеш и регулярка сломается.
Попробуй · raw vs обычная строка
Обычная строка: '\d'
Python видит: d
Слеш потерян!
Raw-строка: r'\d'
Python видит: \d
Всё правильно ✓

Шпаргалка модуля 1

Термин Что значит
Регулярное выражение Шаблон для поиска текста
import re Подключение модуля для работы с regex
r'...' Raw-строка — всегда используй для паттернов
re.findall(p, s) Найти все совпадения паттерна p в строке s
Печать