Модуль re: поиск, сопоставление, поиск всех совпадений и замена
re.search(), re.match(), re.findall(), re.sub(), re.compile() для повышения производительности.
«Модуль re: поиск, сопоставление, поиск всех совпадений и замена» — бесплатный урок Learn AI with Python на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Learn AI with Python, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Learn AI with Python содержит 4 уроков всего.
Модуль re
Python предоставляет доступ к регулярным выражениям через встроенный модуль re. Основные функции — search, match, findall и sub.
Понимание того, какую функцию выбрать, — уже половина дела.
import re # always import it firstre.search — поиск в любом месте
re.search(pattern, text) просматривает всю строку в поисках первого совпадения и возвращает объект совпадения или None, если совпадений нет.
import re
m = re.search("\d+", "order 42 shipped")
if m:
print(m.group()) # "42"
print(m.start()) # 6re.match — поиск с начала строки
re.match выполняет сопоставление только в начале строки. Если шаблон находится не в позиции 0, функция возвращает None, даже если шаблон встречается позже.
import re
print(re.match("\d+", "42 items")) # matches "42"
print(re.match("\d+", "items 42")) # Nonesearch и match
Ключевое различие:
match— шаблон должен начинаться с индекса 0search— шаблон может находиться в любом месте
В большинстве случаев Вам нужен search. Используйте match только тогда, когда специально проверяете префикс.
re.findall — получение всех совпадений
re.findall возвращает список всех неперекрывающихся совпадений в виде строк (не объектов совпадения). Функция идеально подходит для задач извлечения данных.
import re
emails = re.findall("\w+@\w+\.\w+", "a@x.com and b@y.org")
print(emails) # ["a@x.com", "b@y.org"]findall с группами
Если шаблон содержит захватывающие группы, findall возвращает захваченные части, а не всё совпадение целиком — это часто вызывает удивление.
Здесь каждый кортеж содержит код региона и оставшуюся часть.
import re
print(re.findall("(\d{3})-(\d{4})", "555-1234 and 999-8765"))
# [("555", "1234"), ("999", "8765")]re.finditer — объекты совпадения
Если для каждого совпадения нужны позиции или группы, используйте re.finditer. Функция выдаёт объекты совпадения, которые можно перебирать лениво.
import re
for m in re.finditer("\d+", "a1 b22 c333"):
print(m.group(), "at", m.start())re.sub — поиск и замена
re.sub(pattern, replacement, text) заменяет каждое совпадение строкой замены и возвращает новую строку.
Это основа очистки текста: маскирование, нормализация и удаление лишних частей.
import re
clean = re.sub("\d+", "#", "Room 101 and 202")
print(clean) # "Room # and #"sub с обратными ссылками и функциями
В строке замены можно ссылаться на захваченные группы с помощью \1 или использовать функцию для реализации динамической логики.
import re
# Swap "first last" -> "last, first"
print(re.sub("(\w+) (\w+)", "\\2, \\1", "Ada Lovelace"))
# Function replacement: double each number
print(re.sub("\d+", lambda m: str(int(m.group()) * 2), "a1 b2"))re.compile — повторное использование шаблонов
Если шаблон используется много раз (например, в цикле), re.compile один раз создаёт из него повторно используемый объект шаблона. Это ускоряет выполнение и делает код понятнее.
import re
num = re.compile("\d+")
for line in ["a1", "b22", "c333"]:
print(num.findall(line))Полезные флаги
Флаги изменяют поведение сопоставления:
re.IGNORECASE— без учёта регистраre.MULTILINE—^/$сопоставляются с началом и концом каждой строкиre.DOTALL—.также сопоставляется с символами новой строки
import re
print(re.findall("cat", "Cat CAT cat", re.IGNORECASE))
# ["Cat", "CAT", "cat"]Быстрая проверка: search и findall
Вам нужен список всех номеров телефонов, встречающихся в любом месте документа.
Итоги: модуль re
Теперь Вы знаете основные функции для работы с регулярными выражениями:
re.search— первое совпадение в любом месте (объект совпадения)re.match— совпадение только в началеre.findall— список всех совпадений (группы изменяют результат)re.finditer— объекты совпадения с позициямиre.sub— замена совпадений с помощью обратных ссылок или функцииre.compileи флаги для повторного использования и управления поведением
Далее: захватывающие и именованные группы.
Изучай Python с ИИ-репетитором — бесплатно
Пиши и запускай код прямо в браузере, получай мгновенную помощь от ИИ-репетитора 24/7 и продолжи учиться на сайте или в приложении.
- Курсы
- 53
- Уроки
- 225
Часто задаваемые вопросы
Урок «Модуль re: поиск, сопоставление, поиск всех совпадений и замена» бесплатный?
Да — полный текст урока «Модуль re: поиск, сопоставление, поиск всех совпадений и замена» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Learn AI with Python, подпишись на CoddyKit PRO. Курс Learn AI with Python содержит 4 уроков всего.
Чему я научусь в уроке «Модуль re: поиск, сопоставление, поиск всех совпадений и замена»?
re.search(), re.match(), re.findall(), re.sub(), re.compile() для повышения производительности. Ты практикуешь Learn AI with Python с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Learn AI with Python?
Предыдущий опыт не требуется. Learn AI with Python на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.
Сколько времени занимает урок «Модуль re: поиск, сопоставление, поиск всех совпадений и замена»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Learn AI with Python?
Да. Каждый урок Learn AI with Python включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Шаблоны регулярных выражений и классы символов
- Модуль re: поиск, сопоставление, поиск всех совпадений и замена
- Группы захвата и именованные группы
- Очистка текста для искусственного интеллекта с помощью регулярных выражений