Что такое регулярные выражения и зачем они нужны

Знакомимся с идеей текстовых шаблонов и понимаем, какие задачи решают регулярки.

Регулярное выражение — это строка-шаблон, которая описывает множество строк сразу: не один конкретный текст, а правило, которому текст должен соответствовать.

Проблема, которую они решают

Представьте, что в большом тексте нужно найти все номера телефонов, или проверить, что введённый email вообще похож на email, или вытащить из лог-файла все даты. Решать это вручную — циклами по символам, бесконечными if и find — долго и хрупко. Регулярное выражение описывает образец искомого текста одной короткой строкой, а движок сам находит все совпадения.

Например, шаблон «четыре цифры подряд» в синтаксисе регулярок выглядит как \d{4}. Шаблон «слово, потом собака @, потом снова слово и точка» приблизительно описывает email. Вместо десятков строк кода — одна строка-описание.

Где это применяют

  • Валидация: проверить, что строка — это телефон, индекс, дата, пароль нужного формата.
  • Поиск и извлечение: вытащить из текста все ссылки, цены, хештеги, id.
  • Замена и очистка: убрать лишние пробелы, вырезать HTML-теги, переформатировать дату.
  • Разбор данных: распарсить строку лога на IP, метод запроса и код ответа.

Регулярки встроены почти везде: в Python, JavaScript, Java, C#, Go, PHP, в текстовых редакторах (поиск с галочкой «regex»), в утилитах grep, sed, awk. Синтаксис между ними отличается в мелочах, поэтому, освоив его один раз, вы будете применять навык всюду.

Первый рабочий пример

В Python регулярки живут в стандартном модуле re — его не нужно ставить отдельно. Найдём первую группу цифр в строке:

import re

text = "Заказ №2024 готов к отгрузке"
match = re.search(r"\d+", text)
print(match.group())

Вывод:

2024

Здесь \d означает «любая цифра», а + — «одна или больше». То есть \d+ читается как «подряд идущие цифры». Функция re.search нашла первое такое место в строке, а match.group() вернул сам найденный текст.

Сырые строки r"..."

Обратите внимание на r перед кавычками: r"\d+". Это сырая строка (raw string). В обычной строке Python обратный слэш — спецсимвол (\n — перенос строки), а в регулярках обратный слэш тоже значимый. Префикс r говорит Python не трогать слэши, и они доходят до движка регулярок в первозданном виде. Всегда пишите паттерны в сырых строках — это избавит от путаницы с экранированием.

Итог

  • Регулярка — это шаблон, описывающий множество строк, а не конкретный текст.
  • Их применяют для валидации, поиска, замены и разбора текста.
  • В Python регулярки — это модуль re из стандартной библиотеки.
  • Паттерны пишут в сырых строках r"...", чтобы не воевать с обратными слэшами.
Проверьте себя
1. Что такое регулярное выражение?
AКонкретная строка текста, которую мы ищем
BШаблон, описывающий множество подходящих строк по правилу
CФункция языка Python для работы с файлами
DСпособ ускорить выполнение программы
2. Зачем перед паттерном пишут префикс r, например r"\d+"?
AЧтобы паттерн выполнялся быстрее
BЧтобы строка стала сырой и обратные слэши дошли до движка без искажений
CЭто обязательное имя переменной
DЧтобы включить режим без учёта регистра
3. Нужно ли устанавливать модуль re отдельно?
AДа, через pip install re
BНет, re входит в стандартную библиотеку Python
CДа, он есть только в numpy
DНет, регулярки встроены прямо в синтаксис языка
Поддержать проект