Найти тему
proger ЧАЙНИК

Что такое регулярные выражения? RegExp в Python

Оглавление

Манипулирование текстовыми данными – это достаточно частая и популярная задача как в реальной жизни, так и в программировании. К примеру, часто может понадобиться проанализировать текст, найти все конкретные строки в файле и так далее. Обработка текстовых данных может быть достаточно сложной задачей. И как раз для этого есть, быть может, чудной и с первого раза совсем непонятный специальный инструмент! Который называют регулярными выражениями, по-английски "regular expressions".

Что же это такое?

Итак, регулярное выражение – это такая последовательность символов, которая описывает общий шаблон для набора строк. Пока не понятно? Дальше разберемся. ;) Так такие шаблоны можно использовать для поиска, редактирования и обработки текстов. Они могут проверять строку или подстроку на то, соответствует ли она заданному шаблону или же нет, а также могут даже заменить подстроку на другую.

К примеру, нужно найти все файлы с расширением .py из множества других файлов. Или же найти все вхождения конкретного имени (А. С. Пушкин, Пушкин А. С., Александр Сергеевич Пушкин и тд). Это непростая задача, а с regexp задачи такого рода выполняются одной строчкой кода. Ну что, убедил изучать эту технологию? Тогда читаем дальше.

Как же они выглядят? [а-яА-ЯёЁ]{4,} или [a-zA-Z]. Выглядит страшновато, да? Но не так страшен чёрт, как его малюют.

Как работает сравнение

Начну с того, как работает сравнение на простом примере с использованием регулярных выражений. Предположим, что есть набор слов: CAT, DADDY, MAD, BAD. Вам нужно проверить, содержат ли эти слова DAD. Примерно то же самое происходит, когда вы ищите с помощью Ctrl+F в браузере.

Это можно решить использованием паттерна DAD. Что я имею в виду?

-2
  • слово DADDY соответствует нашему паттерну;
  • слово CAT не соответствует из-за букв C и T;
  • слово MAT не соответствует из-за буквы M;
  • слово BAT не соответствует из-за буквы B;

Важно! В регулярных выражениях значение регистра имеет смысл: DAD и dad не совпадают.

"Сила точки"

Как вы помните, в предыдущем примере три слова не соответствовали шаблону из-за одного-двух неподходящих символа. Давайте исправим это. Сделаем так, чтобы последние два слова тоже подошли. Для этого нужно создать новый паттерн, который будет выглядеть как .AD.

-3

Что же произошло? Если говорить простыми словами, наша точка дала возможность иметь на своем месте любой символ, поэтому теперь слова MAD и BAD тоже прошли сравнение.

Пример реализации на языке Python

-4

Заключение

Сегодня я познакомил вас с регулярными выражениями и показал их имплементацию на языке Python. Однако, конечно же, я рассказал вам лишь самую малую часть. Остальное дело за вами. ;) А на сегодня всё, спасибо за внимание!

Вам может быть интересно: