Практическое задание

Эта задача — шаг 32 курса «Регулярные выражения»

Проверка пароля одним выражением

сложно~10 мин

В /root/candidates.txt список паролей-кандидатов. Отбери одним регулярным выражением те, что удовлетворяют политике одновременно: содержат заглавную букву, содержат цифру, содержат хотя бы один символ не из букв и цифр, и имеют длину не меньше 10 символов. Результат (в исходном порядке) — в /root/valid.txt.

Что потренируешь:
  • grep -P
  • lookahead
  • (?=...)
  • проверка нулевой ширины
  • квантификатор {n,}

Разбор темы

Опережающая проверка (?=...) проверяет, что дальше по строке идёт подходящий текст, но оставляет позицию разбора на месте — поэтому несколько таких проверок подряд задают конъюнкцию независимых условий, не завися от их порядка в строке. Это стандартный приём валидации «пароль должен содержать A и B и C»: перечислить условия как lookahead, а собственно потребление символов оставить финальной части шаблона. Работает только в PCRE (grep -P, perl, большинство языков), но не в POSIX-режимах grep.

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

  1. Отобраны верные пароли в исходном порядке
  2. лишних строк нет

Как это выглядит