Блог

Регулярные Выражения. Предисловие

Более подробно эта тема рассматривается в курсе Python Fundamentals

В языке Python регулярные выражения значительно менее популярны, чем в языке JavaScript. Есть достаточно большая группа программистов, которые сознательно избегают их использования. Видимо поэтому, только в самой первой версии Django (одного из самых популярных фреймворков Python) для выделения частей url использовались регулярные выражения. Во второй и последующих версиях Django регулярные выражения больше не используются и эта задача решается стандартными средствами языка Python.

Регулярное выражение - это последовательность символов, определяющая шаблон поиска.

Главный минус регулярных выражений - это сложный и не всегда логичный макроязык. Он включает в себя много деталей, которые, в случае нечастого применения на практике, очень быстро забываются. К тому же, само регулярное выражение крайне сложно в отладке.

Главный плюс: возможность получить компактное и изящное решение в тех случаях, когда любой иной вариант решения будет громоздким, сложным и весьма затратным по времени.

Соответственно, как уже говорилось выше, и сторонников, и противников использования регулярных выражение в Python-коде достаточно много. Поскольку и те, и другие имеют немало аргументов в свою пользу.

Прежде всего для работы с регулярными выражениями нужен инструмент.
Удобный сайт для работы с регулярными выражениями: https://regex101.com/

В простейшем случае, мы может указать точный текст, который должен быть выделен, например is, что означает "надо показать все is в тексте". Либо указать несколько интересующих нас вариантов, разделённых вертикальной чертой: is|the|and, что означает "надо показывать все is, the и and в тексте".

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

Quantification (Квантификация или количественная оценка)

Character class (Класс символов)

Anchors (Якоря)

Metacharacters (Метасимволы)

Регулярные Выражения. Group (Группа или Группировка)

Только после того, как будут получены основные представления о регулярных выражений, есть смысл перейти к рассмотрению более сложных вопросов:

Lazy and Greedy Search (Ленивый и жадный поиск)

Regex Lookaround (Проверка окружения шаблона)