Манипулирование текстовыми данными – это достаточно частая и популярная задача как в реальной жизни, так и в программировании. К примеру, часто может понадобиться проанализировать текст, найти все конкретные строки в файле и так далее. Обработка текстовых данных может быть достаточно сложной задачей. И как раз для этого есть, быть может, чудной и с первого раза совсем непонятный специальный инструмент! Который называют регулярными выражениями, по-английски "regular expressions".
Что же это такое?
Итак, регулярное выражение – это такая последовательность символов, которая описывает общий шаблон для набора строк. Пока не понятно? Дальше разберемся. ;) Так такие шаблоны можно использовать для поиска, редактирования и обработки текстов. Они могут проверять строку или подстроку на то, соответствует ли она заданному шаблону или же нет, а также могут даже заменить подстроку на другую.
К примеру, нужно найти все файлы с расширением .py из множества других файлов. Или же найти все вхождения конкретного имени (А. С. Пушкин, Пушкин А. С., Александр Сергеевич Пушкин и тд). Это непростая задача, а с regexp задачи такого рода выполняются одной строчкой кода. Ну что, убедил изучать эту технологию? Тогда читаем дальше.
Как же они выглядят? [а-яА-ЯёЁ]{4,} или [a-zA-Z]. Выглядит страшновато, да? Но не так страшен чёрт, как его малюют.
Как работает сравнение
Начну с того, как работает сравнение на простом примере с использованием регулярных выражений. Предположим, что есть набор слов: CAT, DADDY, MAD, BAD. Вам нужно проверить, содержат ли эти слова DAD. Примерно то же самое происходит, когда вы ищите с помощью Ctrl+F в браузере.
Это можно решить использованием паттерна DAD. Что я имею в виду?
- слово DADDY соответствует нашему паттерну;
- слово CAT не соответствует из-за букв C и T;
- слово MAT не соответствует из-за буквы M;
- слово BAT не соответствует из-за буквы B;
Важно! В регулярных выражениях значение регистра имеет смысл: DAD и dad не совпадают.
"Сила точки"
Как вы помните, в предыдущем примере три слова не соответствовали шаблону из-за одного-двух неподходящих символа. Давайте исправим это. Сделаем так, чтобы последние два слова тоже подошли. Для этого нужно создать новый паттерн, который будет выглядеть как .AD.
Что же произошло? Если говорить простыми словами, наша точка дала возможность иметь на своем месте любой символ, поэтому теперь слова MAD и BAD тоже прошли сравнение.
Пример реализации на языке Python
Заключение
Сегодня я познакомил вас с регулярными выражениями и показал их имплементацию на языке Python. Однако, конечно же, я рассказал вам лишь самую малую часть. Остальное дело за вами. ;) А на сегодня всё, спасибо за внимание!
Вам может быть интересно: