Блог

Регулярные выражения. Character class (Класс символов)

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

Очевидно, что все показанные ранее примеры поиска точного совпадения слов или символов на практике случаются крайне редко (имеются в виду совпадения, показанные в предыдущем разделе Quantification (Квантификация или количественная оценка)).

Значительно чаще требуется более сложный поиск, например поиск текста, удовлетворяющего определённым критериям. Например, поиск телефонных номеров в формате 000-00-00.

Очевидно, что в начале нашего паттерна, соответствующего поиску указанного формата телефонного номера, потребуется указать комбинацию чисел от 0 до 9, повторяющуюся ровно три раза. Ни больше и не меньше.

В том случае, когда на месте указанного символа может быть любой символ из выбранного диапазона, удобнее всего использовать Character class (Класс символов).

Например, если нам нужна любая буква из набора a, b, c или d, то класс символов мы запишем как [abcd]. И поскольку указанные символы расположены в таблице кодировки по соседству, то запись [abcd] можно сократить до вида [a-d].

Пример класса символов [0-9] - означает, что нам подойдёт любой символ от 0 до 9. И если мы теперь добавим {3}, то это будет означать, что нам нужна группа из трёх чисел подряд: [0-9]{3}.

Далее добавляем дефис и ещё 2 последовательности по два символа. И в результате получаем итоговый паттерн, удовлетворяющий заданному условию:
[0-9]{3}-[0-9]{2}-[0-9]{2}

Кстати, забегая вперёд, следует отметить, что есть один способ записать тоже самое:
\d{3}-\d{2}-\d{2}
В этом случае, для записи последовательности чисел используется специальный символ \d (бэкслеш-ди), называемый
Metacharacter (Метасимвол) .

<<< Назад к началу статьи "Регулярные Выражения. Предисловие"