Перейти к основному контенту
Tech Path Finder
КурсыИнтервьюКод-ревьюБлог
Tech Path Finder

Персонализированный путеводитель в IT. Квизы, мок-интервью, код ревью и аналитика прогресса.

@potapov_me

Платформа

  • Курсы
  • Прогресс
  • Мок-интервью
  • Код ревью
  • Живое ревью с ИИ
  • Тренажёр переговоров
  • Закладки

Контент

  • Блог
  • Главная
  • Обратная связь

Компания

  • О проекте
  • Тарифы
  • Условия использования
  • Конфиденциальность
  • Согласие на обработку данных
  • Cookie
  • Реквизиты

Аккаунт

  • Войти
  • Зарегистрироваться
  • Профиль

© 2026 Tech Path Finder. Все права защищены.

·ИП Потапов К.С.·Политика конфиденциальности·
Сделано с ❤️ в России
  1. Регулярные выражения в Python
Python экосистема·12 тем·72 вопроса·уровень Junior, Middle

Регулярные выражения в Python

Полный курс по регулярным выражениям в Python. От базового синтаксиса до продвинутой оптимизации. Валидация email и телефонов, парсинг логов и HTML, lookahead/lookbehind, флаги, производительность.

Начать курс

Регулярные выражения в Python

Регулярку пишут за минуту, а живёт она в проекте годами — до того дня, когда на вход приходит строка нужной формы, и процесс перестаёт отвечать. Виновата не длина строки, а перебор с возвратами: движок пробует экспоненциальное число вариантов, прежде чем сдаться. Курс доходит до этого места и объясняет, как такие выражения выглядят и чем их заменяют.

Двенадцать тем, от якорей и классов символов до атомарных групп. По дороге: жадные и ленивые квантификаторы и почему .* почти всегда захватывает больше, чем вы думали; именованные группы и обратные ссылки; весь набор методов re — чем search отличается от match, когда нужен finditer вместо findall, что даёт compile; опережающие и ретроспективные проверки; флаги, включая VERBOSE, который превращает нечитаемую строку в выражение с отступами и комментариями.

Две темы практические. Валидация: email, телефоны, URL, даты, пароли — и разбор того, почему «полная» регулярка для email существует, но использовать её не стоит. Парсинг: логи, CSV, извлечение структурированных данных, а также HTML — с честной оговоркой, что для него регулярка годится только как временное решение на разовую задачу.

Уровень — junior и middle. Нужен Python; знать регулярные выражения заранее не нужно, курс начинается с нуля.

  1. 1

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

    Что такое regex, зачем нужен, базовые концепции и области применения

    6 вопросов
  2. 2

    Базовый синтаксис

    Литералы, метасимволы, экранирование, якоря начала и конца строки

    6 вопросов
  3. 3

    Классы символов

    Предопределённые и пользовательские классы символов, инверсия

    6 вопросов
  4. 4

    Квантификаторы

    Количество повторений, greedy vs non-greedy, владение

    6 вопросов
  5. 5

    Группы и захват

    Нумерованные и именованные группы, non-capturing группы, backreferences

    6 вопросов
  6. 6

    Методы re модуля

    match, search, findall, finditer, sub, split, compile

    6 вопросов
  7. 7

    Lookahead и lookbehind

    Опережение и ретроспектива, положительные и отрицательные_assertions

    6 вопросов
  8. 8

    Флаги и модификаторы

    IGNORECASE, MULTILINE, DOTALL, VERBOSE, ASCII, LOCALE

    6 вопросов
  9. 9

    Практическая валидация

    Валидация email, телефонов, URL, дат, паролей и других форматов

    6 вопросов
  10. 10

    Практический парсинг

    Парсинг логов, HTML, JSON, CSV, извлечение структурированных данных

    6 вопросов
  11. 11

    Продвинутые техники

    Backtracking, атомарные группы, условные выражения, рекурсия

    6 вопросов
  12. 12

    Оптимизация и производительность

    Профилирование, кэширование, типичные проблемы и техники оптимизации

    6 вопросов
  13. Зачёт

    Доступен после всех тем (0 из 12)

  14. Экзамен

    Доступен после зачёта

28 / 28

Регулярное выражение (regex)

Базовые концепции

Последовательность символов, определяющая шаблон для поиска в тексте. Используется для поиска, извлечения, замены и валидации текста.

Пример

r'\d+' — шаблон для поиска одной или более цифр

Связанные термины

Шаблон (pattern)

Базовые концепции

Синоним регулярного выражения — строка, описывающая искомый паттерн в тексте.

Пример

pattern = r'[A-Za-z]+@gmail\.com'

Связанные термины

Метасимвол (metacharacter)

Синтаксис regex

Символы, имеющие специальное значение в регулярных выражениях: . ^ $ * + ? { } [ ] \ | ( )

Пример

. — любой символ, * — ноль или более повторений

Связанные термины

Литерал (literal)

Синтаксис regex

Обычный символ, который соответствует самому себе в тексте, а не имеет специального значения.

Пример

В шаблоне r'cat' все три символа — литералы

Связанные термины

Экранирование (escape sequence)

Синтаксис regex

Использование обратной косой черты \ для отключения специального значения метасимвола или обозначения специального символа.

Пример

r'\.' — точка как литерал; r'\n' — символ новой строки

Связанные термины

Сырая строка (raw string)

Python re модуль

Строка Python с префиксом r, в которой обратные косые черты не интерпретируются как escape-последовательности Python. Рекомендуется для regex.

Пример

r'\d+' вместо '\\d+'

Связанные термины

Класс символов (character class)

Синтаксис regex

Набор символов в квадратных скобках [], соответствующий любому одному символу из набора.

Пример

[aeiou] — любая гласная; [0-9] — любая цифра

Связанные термины

Инвертированный класс (negated class)

Синтаксис regex

Класс символов с ^ в начале, соответствующий любому символу, НЕ входящему в набор.

Пример

[^0-9] — любой символ, кроме цифры

Связанные термины

Квантификатор (quantifier)

Синтаксис regex

Символ или конструкция, указывающая количество повторений предыдущего элемента: * + ? {n} {n} {n,m}

Пример

a* — ноль или более 'a'; a{2,4} — от 2 до 4 'a'

Связанные термины

Жадный квантификатор (greedy)

Продвинутые концепции

Квантификатор, который захватывает максимально возможное количество символов. Поведение по умолчанию для * + ? {n,m}.

Пример

В строке 'aaa' шаблон 'a+' захватит все три символа

Связанные термины

Нежадный квантификатор (non-greedy)

Продвинутые концепции

Квантификатор с ?, захватывающий минимальное количество символов: *? +?? {n,m}?

Пример

В '<a><b>' шаблон '<.*?>' найдёт '<a>' и '<b>' отдельно

Связанные термины

Якорь (anchor)

Синтаксис regex

Утверждение, соответствующее позиции в тексте, а не символу: ^ (начало), $ (конец), \b (граница слова).

Пример

^Hello — 'Hello' в начале строки; world$ — 'world' в конце

Связанные термины

Граница слова (word boundary)

Синтаксис regex

Позиция между word-символом (\w) и non-word символом (\W) или началом/концом строки.

Пример

\bcat\b — слово 'cat', но не 'category'

Связанные термины

Группа (group)

Группы и утверждения

Часть шаблона в скобках (), которая захватывает совпадение для последующего использования.

Пример

(\d+)-(\d+) — две группы цифр, разделённых дефисом

Связанные термины

Захватывающая группа (capturing group)

Группы и утверждения

Группа (), которая сохраняет совпадение для извлечения через match.group() или использования в backreference.

Пример

(\d{4})-(\d{2})-(\d{2}) — три группы для даты

Связанные термины

Незахватывающая группа (non-capturing group)

Группы и утверждения

Группа (?:...), которая группирует элементы, но не сохраняет совпадение.

Пример

(?:https?|ftp):// — протокол без захвата

Связанные термины

Именованная группа (named group)

Группы и утверждения

Группа с именем (?P<name>...), позволяющая обращаться по имени вместо номера.

Пример

(?P<year>\d{4})-(?P<month>\d{2}) — группы year и month

Связанные термины

Обратная ссылка (backreference)

Группы и утверждения

Ссылка на ранее захваченную группу: \1, \2 или (?P=name).

Пример

(\w+)\s+\1 — поиск повторяющихся слов

Связанные термины

Lookahead (опережение)

Группы и утверждения

Утверждение, проверяющее наличие шаблона вперёд без захвата: (?=...) положительное, (?!...) отрицательное.

Пример

\d+(?=руб) — число перед 'руб', без захвата 'руб'

Связанные термины

Lookbehind (ретроспектива)

Группы и утверждения

Утверждение, проверяющее наличие шаблона назад без захвата: (?<=...) положительное, (?<!...) отрицательное.

Пример

(?<=\$)\d+ — число после '$', без захвата '$'

Связанные термины

Утверждение (assertion)

Группы и утверждения

Проверка условия в позиции текста без захвата символов: якоря, lookahead, lookbehind.

Пример

^, $, \b, (?=...), (?<=...) — все являются утверждениями

Связанные термины

Флаг (flag)

Python re модуль

Модификатор поведения regex: re.IGNORECASE, re.MULTILINE, re.DOTALL, re.VERBOSE.

Пример

re.compile(r'pattern', re.IGNORECASE | re.MULTILINE)

Связанные термины

Модуль re

Python re модуль

Встроенный модуль Python для работы с регулярными выражениями. Предоставляет функции match, search, findall, sub, split, compile.

Пример

import re; re.findall(r'\d+', 'abc123def')

Связанные термины

Объект совпадения (match object)

Python re модуль

Объект, возвращаемый при успешном совпадении. Содержит информацию о позиции, захваченных группах.

Пример

m = re.search(r'(\d+)', 'abc123'); m.group(1) → '123'

Связанные термины

Backtracking (возврат)

Продвинутые концепции

Механизм, при котором regex-движок возвращается назад для поиска альтернативных совпадений при неудаче.

Пример

Шаблон 'a+b' на 'aaaaac' будет многократно возвращаться, пока не поймёт, что совпадения нет

Связанные термины

Катастрофический backtracking

Продвинутые концепции

Ситуация, когда backtracking приводит к экспоненциальному времени выполнения из-за неудачного совпадения.

Пример

Шаблон '(a+)+b' на строке из 30 'a' без 'b' в конце

Связанные термины

Атомарная группа (atomic group)

Продвинутые концепции

Группа (?>...), которая не допускает backtracking внутри себя после успешного совпадения.

Пример

(?>a+)b — если 'a+' захватил все 'a', backtracking не вернётся

Связанные термины

Владеющий квантификатор (possessive quantifier)

Продвинутые концепции

Квантификатор с +, который захватывает максимально и не допускает backtracking: *+ ++ ?+ {n,m}+.

Пример

a++b — 'a++' захватит все 'a' и не отдаст ни одного

Связанные термины

Частые вопросы о курсе «Регулярные выражения в Python»

Состав курса, уровни, практика и способы проверки знаний.

Что входит в курс «Регулярные выражения в Python»?

Курс включает 12 тем и 72 вопроса с разбором ответа. Начать можно с первой темы курса.

Для какого уровня рассчитан курс «Регулярные выражения в Python»?

Маршрут охватывает уровни Junior, Middle. Темы расположены от основы к более сложным инженерным задачам, поэтому можно начать с подходящего места и не пропускать важные зависимости.

Как проверить, что материал усвоен?

После прохождения тем доступен зачёт по курсу «Регулярные выражения в Python» — 20 случайных вопросов с порогом 80%. После зачёта открывается экзамен с развёрнутыми ответами и автоматической оценкой, приближённый к техническому собеседованию.

Курс «Регулярные выражения в Python» бесплатный?

Да, курс полностью бесплатный: все 12 тем доступны без оплаты.