Когда вы ищете файлы «все фотографии» и пишете *.jpg — вы задаёте шаблон: «что угодно, потом точка, потом jpg». Регулярные выражения — та же идея, но гораздо мощнее: это мини-язык для описания шаблонов текста. «Три цифры, дефис, ещё две цифры», «слово, начинающееся с большой буквы», «что-то похожее на email» — всё это записывается одной строкой-шаблоном.
Зачем это нужно
МетодыФункция, привязанная к объекту и вызываемая через точку: text.upper().строкТекстовое значение в кавычках: "привет". Неизменяема. По-английски string (str). (in, .find(), .replace()) ищут только точный текст. А если нужно найти «любое число» или «любую дату» — точного текста нет, есть закономерность. Для таких задач в Python есть модуль re (regular expressions). Он встроен — достаточно import re.
Первый поиск: re.search
re.search(шаблон, текст) ищет первое совпадение с шаблоном. Если нашёл — возвращает объектКонкретный экземпляр класса — со своими данными. Почти всё в Python является объектом.-совпадение, если нет — None. Запустите:
▶ search.py
💡Совет
Обратите внимание на r"..." перед шаблоном — это сырая строка (raw string). В ней обратный слэш \ — обычный символ, а не начало экранирования. Регулярки полны обратных слэшей, поэтому всегда пишите шаблон как r-строку — избежите трудноуловимых ошибок.
Классы символов
Сила регулярок — специальные обозначения «какой символ подойдёт»:
\d — любая цифра (0–9);
\w — буква, цифра или подчёркивание;
\s — пробельный символ (пробел, таб, перевод строки);
. — любой символ, кроме перевода строки;
[абв] — один символ из перечисленных;
[0-9а-я] — один символ из диапазонов.
Квантификаторы: сколько раз
После символа (или классаШаблон для создания объектов: описывает их данные (атрибуты) и поведение (методы).) можно указать, сколько раз он повторяется:
+ — один или больше раз;
* — ноль или больше раз;
? — ноль или один раз;
{3} — ровно 3 раза; {2,4} — от 2 до 4.
Так \d{4} — «ровно четыре цифры», а [а-я]+ — «одно слово маленькими буквами».
Все совпадения: re.findall
re.findall(шаблон, текст) возвращает списокИзменяемая упорядоченная коллекция элементов: [1, 2, 3]. По-английски list. всех совпадений — чаще всего нужен именно он:
▶ findall.py
Флаг re.IGNORECASE (третий аргументЗначение, которое передаётся функции при вызове. Внутри функции оно доступно как параметр.) делает поиск нечувствительным к регистру: «Кот» и «кот» совпадают.
Заданиерешение.py
Напишите функцию find_numbers(s), которая возвращает список всех чисел из строки — как списка строк. Например, для "в 2024 году 365 дней" → ["2024", "365"].
Заданиерешение.py
Напишите функцию has_time(s), которая возвращает True, если в строке есть время в формате чч:мм (1–2 цифры, двоеточие, ровно 2 цифры), иначе False.
⚠️ Частые ошибки новичков
Ошибка 1. Забыть r перед строкой шаблона. Без него Python сам обработает \, и шаблон может молча измениться. Пишите r"\d+" всегда.
Ошибка 2. Путать search и findall: search возвращает объект первого совпадения или None, а findall — список строк. Если нужен просто список найденного — берите findall.
Ошибка 3. Забывать, что . в регулярке — «любой символ». Чтобы найти настоящую точку, экранируйте её: \..
❓Проверь себя
Что означает шаблон \d{2,4}?
Что вернёт re.search(r"\d+", "нет цифр")?
Зачем перед шаблоном пишут r (r"\d+")?
Что запомнить
Регулярное выражение — шаблон текста; модуль re встроен в Python.
re.search — первое совпадение (или None); re.findall — список всех.
\d — цифра, \w — буква/цифра, . — любой символ.
Квантификаторы: + (≥1), * (≥0), ? (0 или 1), {n,m}.
Комментарии
Загрузка…
Загрузка комментариев…