Крышка и доллар, мы упоминали о нем в предыдущем видео,
это начало и конец строки.
Причем если не указан ключ мултилайн,
то это начало и конец строки всего текста,
а если указан дополнительный флаг мультилайн,
то это начало и конец каждой строке, если текст многострочный.
Давайте попробуем немного практики.
У нас есть список никнеймов, которые мы хотим проверить корректные они или некорректные.
Мы считаем, что в никнейме у нас может быть только буквы,
цифры и знак подчеркивания. Давайте попробуем написать регулярное выражение.
Смотрите, в нашей программе мы используем метод re-compile,
который позволяет один раз компилировать регулярное выражение
и потом несколько раз его использовать.
Методы у скомпилированного регулярного выражения,
ровно такие же, как у модуля ре,
только не надо передавать первым параметром само регулярное выражение,
потому что оно задается именно при компиляции,
также вторым параметром [inaudible] у re-compile могут быть флаги,
это удобно использовать если регулярное выражение встречается
несколько раз в программе или используется внутри цикла,
чтобы каждый раз оно не компилировалось заново внутри больших вычислений,
внутри длительных вычислений не повторялся этот код.
Давайте переберем все ники, в нашем списке никнеймов и проверим,
является ли никнейм валидным или нет.
Для этого мы будем писать valid,
если регулярное выражение нашло полностью соответствие в нашем нике и in valid, если нет.
Давайте попробуем. Удивительно все ники у нас валидны. Почему так получилось?
Ведь на самом деле в Алёне есть буква ё,
которое не соответствуют латинскими буквам, а в Иван Ивановиче вообще есть пробел.
Дело в том, что мы написали match,
который хотя и ищет соответствия сначала строки,
в отличие от search, который ищет полностью,
но никто не говорит,
что это соответствие должно идти до конца строки, поэтому супер хаксер нашелся целиком,
в Алёне наш match нашел первые две буквы А Л,
которые попали под регулярный уровень,
и это было достаточно, он уже вернул истину.
Иван Иванович точно также. Что же нам делать?Конечно же
мы можем с легкостью изменить это регулярное выражение просто добавив крышку и доллар.
Теперь оно будет означать,
что начиная с начала строки до самого ее конца идут буквы, цифры и подчеркивания.
Попробуем, что у нас получилось.
Теперь Иван Иванович стал не валидным,
но Алёна по прежнему осталась валидной,
потому что под \w попадают и символ национального алфавита.
Если мы хотим сделать,
чтобы под \w попадали только английские буквы,
мы должны добавить флаг re.ASCII.