Регулярные выражения: поиск шаблонов в тексте
Автор: Казачкин Даниил Михайлович · Обновлено
Регулярное выражение описывает шаблон текста. Оно помогает искать номера, коды, даты, слова определенного вида и повторяющиеся фрагменты. Для школьника это полезный инструмент, но его нужно использовать аккуратно.
В Python регулярные выражения находятся в модуле re.
import re
text = 'Коды: A12, B7, C105'
matches = re.findall(r'[A-Z]\d+', text)
print(matches)Шаблон [A-Z]\d+ означает: одна заглавная латинская буква, затем одна или несколько цифр.
Когда регулярное выражение уместно
Регулярные выражения полезны, если нужно найти текст по форме:
- код товара;
- номер кабинета;
- дату;
- адрес электронной почты в учебном примере;
- последовательность цифр;
- слово с определенной приставкой.
Пример проверки
Пусть школьный код должен состоять из двух букв и трех цифр.
import re
code = input()
if re.fullmatch(r'[A-Z]{2}\d{3}', code):
print('код корректен')
else:
print('ошибка')fullmatch требует, чтобы вся строка соответствовала шаблону, а не только ее часть.
Ограничения
Не стоит заменять регулярными выражениями обычные условия там, где проще использовать split, isdigit или перебор символов. Сложный шаблон трудно читать и отлаживать.
Для подготовки к информатике достаточно понимать идею: регулярное выражение — это компактное описание текстового шаблона. Начинайте с простых шаблонов и обязательно проверяйте их на нескольких примерах.
Практикум: проверка кодов через полный шаблон
Требуется код вида двух заглавных латинских букв, дефиса и четырёх цифр. Составьте шаблон и проверьте AB-2048, ab-2048, ABC-2048, AB-20X8 и строку с лишним текстом по краям. Используйте проверку всей строки, а не поиск подходящего фрагмента. Затем выделите буквенную и числовую части группами и преобразуйте номер. Сравните решение с последовательными проверками длины, позиции дефиса и классов символов: для простого формата обычный код может оказаться понятнее.
Контрольная точка
Чем поиск совпадения отличается от проверки полного формата? Покажите строку, внутри которой есть корректный фрагмент, но вся строка должна быть отклонена.
Частые вопросы
Нужно ли решать регулярным выражением любую задачу со строкой?
Нет. Регулярные выражения удобны для устойчивого текстового шаблона. Если правила зависят от нескольких этапов, числовых ограничений или сложной структуры, последовательный разбор часто легче читать, тестировать и объяснять.
Источники
- Босова Л.Л. Информатика. Базовый курс: учебник для 7-9 классов. - М.: БИНОМ. Лаборатория знаний.
- Поляков К.Ю., Еремин Е.А. Информатика. 10-11 классы. Углубленный уровень.
- Python Documentation: The Python Tutorial.