Одной из наиболее распространенных задач при работе с текстовыми данными является задачи поиска и проверки на соответствие некоторым условиям и здесь нам очень пригодится модуль re в Python. Очень часто нам заранее известно, что именно мы ищем в строке, для этого можем использовать методы строк find() или index(), а что, если паттерн заранее невозможно определить? И есть только набор правил, которому строка должна соответствовать. Например, логин пользователя должен не просто состоять только из латинских символов и цифр, а содержать хотя бы одну букву в верхнем регистре. Для решения задач в работе со строками можно на основе имеющихся правил (ограничений) составить шаблон и выполнять его поиск в строке, которую необходимо проверить на соответствие, и как раз здесь нам поможет модуль re в Python.
Метасимволы модуля Re в Python
В состав RE входят не только отдельные специальные символы (метасимволы), но и их последовательности. К метасимволам относятся символы точки «.», символ «^», знак доллара «$», символ «*», плюс «+», вопросительный знак «?», открывающаяся, закрывающаяся фигурные «{}», квадратные «[]», круглые «()» скобки , обратный слэш (бэк слеш) «\», вертикальная черта «|».
Давайте рассмотрим их:
- «.» – Задание (представление) одного произвольного символа (кроме символа новой строки)
- «^» – Признак начала последовательности
- «$» – Признак окончания последовательности
- «*» – Обозначает любое количество повторений одного символа (0 или более), предшествующего символу «*»
- «+» – Обозначает любое количество повторений одного символа (1 или более), предшествующего символу «+»
- «?» – Обозначает ноль или одно повторений одного символа, предшествующего символу «?»
- «{}» – Обозначает заданное число (n) повторений одногосимвола, предшествующего символу «{»
- «[]» – Используется для задания любого символа, из перечисленных внутри []
- «()» – Для создания группы символов (выражение внутри () рассматривается как один элемент)
- «\» – Используется для экранирования метасимволов
- «|» – Соответствует логическому ИЛИ (значение до или после символа «|»)
Шаблоны модуля Re в Python
Шаблоны которые входят в состав RE:
- «\d» – Соответствует одной десятичной цифре
- «\D» – Соответствует одному любому символу, кроме десятичной цифры
- «\s» – Соответствует одному (любому) пробельному символу
- «\S» – Соответствует одному (любому) символу, который не относится к пробельным
- «\w» – Соответствует любому буквенно-цифровому символу или символу нижнего подчеркивания («_»)
- «\W» – Соответствует любому не буквенно-цифровому символу и не символу нижнего подчеркивания («_»)
- «[….]» – Соответствует любому одному из символов, перечисленных в скобках, можно также указывать диапазоны символов (например, [0-5] — любая цифра от 0 до 5). Внимание! метасимволы внутри [] теряют свое специальное значение и обозначают просто символ. Например, точка внутри [] будет обозначать именно точку, а не любой символ
- «[^…]» – Соответствует любому одному символу, кроме перечисленных в скобках или кроме тех, что попадают в указанный диапазон
- «\b» – Соответствует началу или концу слова (т.е. слева от \b пусто или не буквенный символ, справа буква и наоборот для конца слова). В отличие от предыдущих шаблонов соответствует позиции, а не символу
- «\B» – Соответствует «внутреннему» (неграничному) символу слова (т.е. слева и справа от \B буквенные символы, или слева и справа от \B не буквенные символы)