JustCaptain kod-buduschego
e44b3dcaea03c3c3b4fbebcb5af2325d40ae8b10
Перейти к файлу
Код
kod-buduschego Python 2025-20264.7. Регулярные выраженияpracticeschatgptTASKS.md
anc update c70a58f 8 октября 2026 г.
403 строки 6.2 КБ
TASKS.md
  1. Извлечение 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"
]

⸻

  1. Поиск заказов дороже 1000€

Кейс

Финансовый отдел хочет увидеть крупные заказы.

Данные

orders = """
Order #A123 amount=450€
Order #B991 amount=1299€
Order #C555 amount=999€
Order #D777 amount=3500€
"""

Задача

Извлечь номера заказов, где сумма больше 1000.

Ожидаемый результат

["B991", "D777"]

⸻

  1. Проверка паролей

Кейс

Регистрация пользователей.

Данные

passwords = [
"abc123",
"Password1",
"SUPER_PASS_2025",
"qwerty",
"Admin@2026",
]

Задача

Оставить только пароли, которые:

  • минимум 8 символов
  • содержат хотя бы одну цифру
  • содержат хотя бы одну букву

Ожидаемый результат

[
"Password1",
"SUPER_PASS_2025",
"Admin@2026"
]

⸻

  1. Извлечение 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"
]

⸻

  1. Парсинг сообщений банка

Кейс

Из SMS нужно извлечь суммы операций.

Данные

messages = """
Payment 120.50 EUR completed
Withdrawal 500 EUR
Refund 89.99 EUR
Balance 3000 EUR
"""

Задача

Извлечь суммы операций.

Ожидаемый результат

[
"120.50",
"500",
"89.99",
"3000"
]

⸻

  1. Анализ nginx логов

Кейс

Посчитать количество запросов по HTTP-методам.

Данные

nginx_log = """
GET /home
POST /login
GET /products
DELETE /product/123
PUT /product/123
GET /cart
"""

Задача

Извлечь методы запросов.

Ожидаемый результат

[
"GET",
"POST",
"GET",
"DELETE",
"PUT",
"GET"
]

⸻

  1. Очистка текста от HTML

Кейс

С сайта выгрузили текст с тегами.

Данные

html = """

Product

Price: 100 EUR

"""

Задача

Удалить все HTML-теги.

Ожидаемый результат

"""
Product
Price: 100 EUR
"""

⸻

  1. Поиск подозрительных входов

Кейс

Безопасность ищет входы ночью.

Данные

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"
]

⸻

  1. Парсинг 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")
]

⸻

  1. Парсинг вакансий

Кейс

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

Данные

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")
]

⸻

  1. Практический кейс: поиск утечки токенов

Кейс

В логах случайно могли попасть 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"
]

⸻

  1. Продвинутый кейс: анализ чата поддержки

Кейс

Нужно найти все обращения с номерами тикетов.

Данные

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.