JustCaptain kod-buduschego
6fd6c9a4bbd30b9f79d65f8e226e9c0fdc4255ba
Перейти к файлу
Код
TASKS.md

Sprint 63 — Регулярные выражения (Junior)

Все задачи одного уровня.

⸻

TASK-J1 — Валидация корпоративной почты

Контекст

При регистрации сотрудников HR-система должна принимать только корпоративные email.

Разрешены адреса только в домене company.com.

⸻

Данные

emails = [
"alex@company.com",
"kate@gmail.com",
"john@company.com",
"admin@yahoo.com",
"test@company.com"
]

⸻

Требования

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

⸻

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

[
"alex@company.com",
"john@company.com",
"test@company.com"
]

⸻

Что проверяется

  • re.findall() или re.match()
  • Символы ^ и $
  • Экранирование точки (.)

⸻

TASK-J2 — Извлечение номеров заказов

Контекст

Логи содержат информацию о действиях пользователей.

Нужно извлечь номера заказов.

⸻

Данные

logs = """
User created order #1001
Payment for order #1002 completed
Order #1003 cancelled
Refund for order #1004
"""

⸻

Требования

Получить список всех номеров заказов.

⸻

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

["1001", "1002", "1003", "1004"]

⸻

Что проверяется

  • re.findall()
  • Группы
  • \d+

⸻

TASK-J3 — Проверка номера телефона

Контекст

CRM принимает номера только в формате:

+7 (999) 123-45-67

⸻

Данные

phones = [
"+7 (999) 123-45-67",
"89991234567",
"+7 (111) 555-44-33",
"+79991234567",
]

⸻

Требования

Оставить только номера, полностью соответствующие формату.

⸻

Что проверяется

  • re.fullmatch()
  • Квантификаторы
  • Экранирование специальных символов

⸻

Sprint 63 — Регулярные выражения (Middle)

⸻

TASK-M1 — Анализ логов API

Контекст

Команда мониторинга анализирует серверные логи.

Нужно извлечь HTTP-метод, URL и код ответа.

⸻

Данные

logs = [
"GET /api/users 200",
"POST /api/orders 201",
"DELETE /api/orders/15 404",
"PUT /api/products/7 500",
]

⸻

Требования

Получить структуру:

[
("GET", "/api/users", "200"),
("POST", "/api/orders", "201"),
("DELETE", "/api/orders/15", "404"),
("PUT", "/api/products/7", "500"),
]

⸻

Что проверяется

  • Группы
  • re.match()
  • Работа с несколькими шаблонами

⸻

TASK-M2 — Поиск SQL-запросов

Контекст

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

Нужно найти все SQL-запросы вида:

SELECT ...

которые заканчиваются символом ;.

⸻

Данные

text = """
Some text
SELECT * FROM users;
Random line
SELECT id, name FROM products WHERE price > 100;
Another text
"""

⸻

Требования

Извлечь каждый SQL-запрос целиком.

⸻

Ограничения

Запрос может содержать любые символы между SELECT и ;.

⸻

Что проверяется

  • re.DOTALL
  • Ленивые квантификаторы .*?

⸻

TASK-M3 — Маскирование персональных данных

Контекст

Перед отправкой логов клиенту необходимо скрыть номера банковских карт.

⸻

Данные

text = """
User paid with card 1234-5678-9012-3456.
Backup card: 5555-4444-3333-2222.
"""

⸻

Требования

Заменить все номера карт на:

**-**-**-**

⸻

Использовать

re.sub()

⸻

Что проверяется

  • Замена по шаблону
  • Квантификаторы
  • Группы символов

⸻

Sprint 63 — Регулярные выражения (Senior)

⸻

TASK-S1 — Парсер конфигурационного файла

Контекст

Приложение читает конфигурацию следующего вида:

HOST=localhost
PORT=5432
DEBUG=True
TIMEOUT=30

⸻

Требования

С помощью одного регулярного выражения получить словарь:

{
"HOST": "localhost",
"PORT": "5432",
"DEBUG": "True",
"TIMEOUT": "30"
}

⸻

Что проверяется

  • Именованные группы
  • Многострочный режим (re.MULTILINE)

⸻

TASK-S2 — Проверка сложности пароля

Контекст

Система безопасности предъявляет требования:

  • минимум 10 символов;
  • хотя бы одна заглавная буква;
  • хотя бы одна строчная;
  • хотя бы одна цифра;
  • хотя бы один специальный символ из !@#$%^&*;
  • без пробелов.

⸻

Данные

passwords = [
"Password123!",
"password",
"Qwerty123",
"Admin@2025",
"1234567890",
]

⸻

Требования

Используя одно регулярное выражение, определить, какие пароли удовлетворяют всем требованиям.

⸻

Что проверяется

  • Lookahead ((?=...))
  • re.fullmatch()
  • Сложные составные шаблоны

⸻

TASK-S3 — Мини-парсер шаблонов

Контекст

В системе используются шаблоны писем:

Здравствуйте, {{name}}!
Ваш заказ №{{order_id}} готов.
С уважением,
{{company}}

⸻

Требования

Извлечь все имена переменных внутри двойных фигурных скобок.

⸻

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

[
"name",
"order_id",
"company"
]

⸻

Дополнительное требование

Регулярное выражение должно:

  • извлекать только содержимое между {{ и }};
  • не включать сами фигурные скобки;
  • корректно работать, если в тексте встречается несколько шаблонов в одной строке.

⸻

Что проверяется

  • Нежадные квантификаторы
  • Группы захвата
  • Практическое применение регулярных выражений для парсинга шаблонов