- Извлечение email из логов регистрации
Кейс
Нужно собрать список email пользователей, которые зарегистрировались за день.
Данные
logs = """
2026-05-01 INFO user=john email=john.doe@gmail.com
2026-05-01 INFO user=alice email=alice_99@yahoo.com
2026-05-01 ERROR invalid email=broken@email
2026-05-01 INFO user=bob email=bob-work@mail.co.uk
"""
Задача
Найти все валидные email.
Ожидаемый результат
[
"john.doe@gmail.com",
"alice_99@yahoo.com",
"bob-work@mail.co.uk"
]
⸻
- Поиск заказов дороже 1000€
Кейс
Финансовый отдел хочет увидеть крупные заказы.
Данные
orders = """
Order #A123 amount=450€
Order #B991 amount=1299€
Order #C555 amount=999€
Order #D777 amount=3500€
"""
Задача
Извлечь номера заказов, где сумма больше 1000.
Ожидаемый результат
["B991", "D777"]
⸻
- Проверка паролей
Кейс
Регистрация пользователей.
Данные
passwords = [
"abc123",
"Password1",
"SUPER_PASS_2025",
"qwerty",
"Admin@2026",
]
Задача
Оставить только пароли, которые:
- минимум 8 символов
- содержат хотя бы одну цифру
- содержат хотя бы одну букву
Ожидаемый результат
[
"Password1",
"SUPER_PASS_2025",
"Admin@2026"
]
⸻
- Извлечение IP-адресов из логов
Кейс
Нужно найти все источники запросов.
Данные
access_log = """
192.168.1.1 GET /index
10.0.0.5 POST /login
invalid.ip.address
172.16.0.200 GET /api
"""
Задача
Извлечь IPv4.
Ожидаемый результат
[
"192.168.1.1",
"10.0.0.5",
"172.16.0.200"
]
⸻
- Парсинг сообщений банка
Кейс
Из SMS нужно извлечь суммы операций.
Данные
messages = """
Payment 120.50 EUR completed
Withdrawal 500 EUR
Refund 89.99 EUR
Balance 3000 EUR
"""
Задача
Извлечь суммы операций.
Ожидаемый результат
[
"120.50",
"500",
"89.99",
"3000"
]
⸻
- Анализ nginx логов
Кейс
Посчитать количество запросов по HTTP-методам.
Данные
nginx_log = """
GET /home
POST /login
GET /products
DELETE /product/123
PUT /product/123
GET /cart
"""
Задача
Извлечь методы запросов.
Ожидаемый результат
[
"GET",
"POST",
"GET",
"DELETE",
"PUT",
"GET"
]
⸻
- Очистка текста от HTML
Кейс
С сайта выгрузили текст с тегами.
Данные
html = """
Product
Price: 100 EUR
Задача
Удалить все HTML-теги.
Ожидаемый результат
"""
Product
Price: 100 EUR
"""
⸻
- Поиск подозрительных входов
Кейс
Безопасность ищет входы ночью.
Данные
events = """
user=alice time=08:22
user=bob time=02:14
user=charlie time=23:45
user=david time=14:30
"""
Задача
Найти записи между 00:00 и 05:59.
Ожидаемый результат
[
"user=bob time=02:14"
]
⸻
- Парсинг URL параметров
Кейс
Маркетинг анализирует utm-метки.
Данные
url = """
https://site.com/?utm_source=google&utm_medium=cpc&utm_campaign=spring_sale
"""
Задача
Извлечь пары ключ=значение.
Ожидаемый результат
[
("utm_source", "google"),
("utm_medium", "cpc"),
("utm_campaign", "spring_sale")
]
⸻
- Парсинг вакансий
Кейс
Нужно собрать зарплаты из текстовых вакансий.
Данные
jobs = """
Python Developer - salary 4500 EUR
Data Engineer - salary 6200 EUR
Junior QA - salary 1800 EUR
ML Engineer - salary 7500 EUR
"""
Задача
Извлечь название вакансии и зарплату.
Ожидаемый результат
[
("Python Developer", "4500"),
("Data Engineer", "6200"),
("Junior QA", "1800"),
("ML Engineer", "7500")
]
⸻
- Практический кейс: поиск утечки токенов
Кейс
В логах случайно могли попасть API-токены.
Данные
logs = """
user login success
token=sk_live_a8d9f2e1c4b7
request completed
token=sk_test_12345
token=invalid_token
token=sk_live_92abff7123cc
"""
Задача
Найти все токены формата:
sklive<12 hex символов>
Ожидаемый результат
[
"sk_live_a8d9f2e1c4b7",
"sk_live_92abff7123cc"
]
⸻
- Продвинутый кейс: анализ чата поддержки
Кейс
Нужно найти все обращения с номерами тикетов.
Данные
chat = """
Здравствуйте, тикет TKT-12345 до сих пор открыт.
Проверьте пожалуйста TKT-99999.
Спасибо.
Номер обращения TKT-54321.
"""
Задача
Извлечь номера тикетов.
Ожидаемый результат
[
"TKT-12345",
"TKT-99999",
"TKT-54321"
]
⸻
Сложный челлендж
Кейс
Есть сырые логи интернет-магазина.
Данные
raw_logs = """
[2026-06-01 10:12:01] user=123 email=test@gmail.com order=ORD-111 amount=250
[2026-06-01 10:15:11] user=555 email=alice@yahoo.com order=ORD-222 amount=900
[2026-06-01 10:18:33] user=999 email=bob@mail.com order=ORD-333 amount=1200
"""
Задача
Одним regex получить:
[
{
"user": "123",
"email": "test@gmail.com",
"order": "ORD-111",
"amount": "250"
},
...
]
Использовать именованные группы:
(?P...)
(?P...)
(?P...)
(?P...)
Это упражнение хорошо тренирует:
- character classes
- quantifiers
- groups
- named groups
- lookahead/lookbehind
- re.findall
- re.finditer
- re.sub
- re.match
- re.search
- re.fullmatch
- флаги MULTILINE, DOTALL, IGNORECASE и VERBOSE.