Python Regex: сопоставление с образцом с помощью модуля re

Освойте регулярные выражения (Regex) в Python. Научитесь искать, сопоставлять, разбивать и заменять строковые данные с помощью встроенной библиотеки re.

Попробуйте в редакторе

Обзор

Регулярные выражения (часто сокращаемые до регулярных выражений) — это мини-язык, используемый для расширенного поиска текста, сопоставления строк и манипуляций. Вместо проверки простых строковых значений регулярное выражение позволяет определять сложные шаблоны для поиска внутри больших объемов текста. Например, найти все адреса электронной почты, номера телефонов или URL-адреса в документе легко выразить с помощью регулярного выражения, но невероятно сложно написать с использованием обычных строковых методов.

Python предоставляет встроенную поддержку регулярных выражений через модуль re. Модуль включает в себя важные функции, такие как re.search() для поиска первого совпадения, re.findall() для получения всех совпадающих подстрок в виде списка и re.finditer() для перебора объектов соответствия. Каждый объект соответствия предоставляет метаданные, такие как точный индекс начальной и конечной позиции соответствующей подстроки, а также сам соответствующий текст.

В шаблонах регулярных выражений используются специальные метасимволы: `\d` соответствует любой цифре, `\w` соответствует буквенно-цифровым символам, `+` соответствует одному или нескольким повторениям, а скобки `[...]` определяют наборы символов. Группировка с помощью круглых скобок `(...)` позволяет выделить определенные части шаблона. Кроме того, re.sub() позволяет вам искать шаблон и заменять его новой строкой. Хотя регулярное выражение требует сложного обучения, его освоение предоставит вам невероятно быстрый и универсальный инструмент для обработки текста.

Код и вывод выполнения

Использование модуля re для проверки и извлечения компонентов адреса электронной почты.

import re

text = "Contact support at info@pyrun.xyz or developer@pyrun.xyz today."

# Pattern to match email addresses
email_pattern = r"([a-zA-Z0-9._%+-]+)@([a-zA-Z0-9.-]+\.[a-zA-Z]{2,})"

# Find all matches
emails = re.findall(email_pattern, text)
print("Emails found:")
for user, domain in emails:
    print(f"User: {user} | Domain: {domain}")

# Redacting emails using re.sub
redacted_text = re.sub(email_pattern, "[REDACTED]", text)
print(f"\nRedacted Text:\n{redacted_text}")
Терминальный выход
Emails found:
User: info | Domain: pyrun.xyz
User: developer | Domain: pyrun.xyz

Redacted Text:
Contact support at [REDACTED] or [REDACTED] today.

Пошаговая реализация

  • Проверка ввода формата (электронная почта, телефоны, пароли)
  • Анализ журналов доступа к серверу на предмет кодов состояния
  • Извлечение информации из необработанного HTML и отчетов об уценке

Часто задаваемые вопросы

Каково значение префикса «r» в шаблонах регулярных выражений?

Он обозначает «необработанную строку». Необработанные строки обрабатывают обратную косую черту (\) как литеральные символы, а не escape-символы, что позволяет избежать синтаксических конфликтов с подстановочными знаками регулярных выражений.

В чем разница между повторным сопоставлением и исследованием?

re.match проверяет совпадение только с самого начала строки, а re.search сканирует всю строку на наличие совпадений.

Связанные темы

Рекомендуемые ресурсы Python

Расширьте свои знания с помощью соответствующих интерактивных руководств, шпаргалок и сравнений кода.