Mediumregex

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

1Постановка

Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.

2Решение

re — модуль regex. Функции: match (с начала), search (в любом месте), fullmatch (вся строка), findall, finditer, sub (replace), split.

import re

# Извлечение данных
m = re.search(r'(\d{4})-(\d{2})-(\d{2})', '2024-01-15')
if m:
    year, month, day = m.groups()   # ('2024', '01', '15')

# Named groups
m = re.search(r'(?P<year>\d{4})', text)
m.group('year')

# Compiled (для повторного использования)
email_re = re.compile(r'[\w.+-]+@[\w-]+\.[\w.]+')
email_re.findall(text)

# Замена
re.sub(r'\s+', ' ', text)   # нормализация пробелов
  • Patterns: . (any), \d/\w/\s, [abc], [^abc], */+/?, {n,m}, |, () (group), (?:...) (non-capturing), (?=...) (lookahead), (?<=...) (lookbehind);
  • flags: re.IGNORECASE, re.DOTALL, re.MULTILINE, re.VERBOSE;
  • Greedy vs lazy: *?/+?;
  • Catastrophic backtracking — опасность сложных patterns на длинных строках.

3Как отвечать

  • Сначала уточните условия и ограничения, покажите аналитическое мышление.
  • Рассуждайте вслух — интервьюеру важен ход мысли, а не только финальный ответ.
  • Оцените сложность по времени и памяти (Big-O), если это алгоритмический вопрос.
💡

На реальном собеседовании Alffert подскажет развёрнутый ответ в реальном времени.