Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial programming >> Python

Мастерство регулярных выражений Python: re.match(), re.search(), re.findall() — практические примеры

Что такое регулярное выражение в Python?

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

В Python модуль re поставляется с интерпретатором и предоставляет богатый API для компиляции паттернов, поиска и замены текста. Будь то фильтрация пользовательского ввода, парсинг логов или скрапинг контента — твёрдое понимание основ regex экономит время и снижает баги.

Основные концепции Regex

Таблица распространённых идентификаторов

ИдентификаторОписаниеWhitespaceСпец. экранирование
\dЛюбая цифра (0‑9)\n., +, *, ?, [], $, ^, (, ), {}, |, \
\DНе цифра\s
\sПробел, таб, перевод строки и т.д.\t
\SНе пробел\e
\wБуквенно-цифровые + подчёркивание\r
\WНе буквенно-цифровые (кроме _)\f
.Любой символ, кроме новой строки—
\bГраница слова—
\.Буквальная точка—
\{x}Ровно x вхождений—

Начало работы с re

import re

Модуль re входит в стандартную библиотеку и не требует внешних зависимостей. Типичные сценарии:

Пример 1: \w+ и ^

Их комбинация захватывает первое слово строки:

import re
sample = "guru99, education is fun"
result = re.findall(r"^\w+", sample)
print(result) # Output: ['guru99']

Без + вернётся только первый символ: ["g"].

Пример 2: Разделение по пробелам с \s

Функция re.split() делит строку там, где совпадает паттерн. Использование \s разбивает по любому whitespace-символу.

import re
text = "we are splitting the words"
print(re.split(r"\s", text)) # ['we', 'are', 'splitting', 'the', 'words']

Если обратный слэш опущен, s трактуется как литерал, вызывая разбиение по каждому символу s.

Обзор методов Regex

Использование re.match()

import re
text = "guru99 is a great platform"
match = re.match(r"^\w+", text)
print(match.group() if match else "No match") # Output: guru99

Использование re.search()

import re
text = "Software Testing is fun"
for pattern in ["Software testing", "guru99"]:
    found = re.search(pattern, text, re.IGNORECASE)
    print(f"Looking for '{pattern}' in '{text}' - {'found a match!' if found else 'no match'}")

Использование re.findall()

import re
emails = "guru99@google.com, careerguru99@hotmail.com, users@yahoomail.com"
found = re.findall(r"[\w\.-]+@[\w\.-]+", emails)
for e in found:
    print(e)

Флаги Regex

Флаги модифицируют поведение паттерна. Частые флаги:

ФлагОписание
re.M (re.MULTILINE)^ и $ совпадают с началом и концом каждой строки.
re.I (re.IGNORECASE)Игнорировать различия в регистре.
re.S (re.DOTALL)Точка совпадает с переводами строки.
re.U (re.UNICODE)Unicode-aware классы символов.
re.L (re.LOCALE)Классы зависят от текущей локали.
re.X (re.VERBOSE)Позволяют пробелы и комментарии в паттерне.

Пример многострочности

import re
text = """guru99
careerguru99
selenium"""
print(re.findall(r"^\w", text))           # ['g']
print(re.findall(r"^\w", text, re.MULTILINE)) # ['g', 'c', 's']

Совместимость с Python 2

Все примеры выше написаны для Python 3. Если нужно запустить под Python 2, замените print() на синтаксис Python 2 и убедитесь, что модуль re импортирован так же.

Резюме

Мастерство Python regex даёт мощный инструментарий для обработки текста:

Python

  1. Мастерство метода strip() в Python: подробное руководство и практические примеры
  2. Мастерство метода str.count() в Python: как подсчитывать символы и подстроки с примерами
  3. Мастерство строк форматирования format() в Python: понятные примеры
  4. Python len(): практическое руководство по измерению длины объектов
  5. Мастерство метода String.find() в Python: синтаксис, примеры и альтернативы
  6. Функция round() в Python: подробное объяснение с практическими примерами
  7. Освоение функции map() в Python: синтаксис, примеры и лучшие практики
  8. Python timeit(): измерение времени выполнения с практическими примерами
  9. Counter в collections Python: эффективное подсчёт, обновление и арифметические операции
  10. Python list.count(): экспертное руководство с практическими примерами