Регулярные выражения Python стали проще

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

Начало работы с модулем re

Для использования регулярных выражений в Python необходимо импортировать модуль re. Этот модуль предоставляет несколько функций для работы с шаблонами регулярных выражений:

  • re.match() - Проверяет совпадение только в начале строки.
  • re.search() — Поиск совпадений по всей строке.
  • re.findall() — находит все совпадения в строке и возвращает их в виде списка.
  • re.sub() — Заменяет совпадения в строке указанной заменой.

Базовое сопоставление с образцом

Регулярные выражения используют специальные символы для определения шаблонов поиска. Вот некоторые основные шаблоны:

  • . - Соответствует любому одиночному символу, кроме символа новой строки.
  • \d - Соответствует любой цифре (эквивалентно [0-9]).
  • \w - Соответствует любому буквенно-цифровому символу (эквивалентно [a-zA-Z0-9_]).
  • \s ​​— соответствует любому пробельному символу.
  • ^ — Соответствует началу строки.
  • $ — Соответствует концу строки.

Примеры

Вот несколько примеров, демонстрирующих базовое сопоставление с образцом:

import re

# Match a pattern at the beginning of a string
result = re.match(r'Hello', 'Hello, World!')
print(result.group())  # Output: Hello

# Search for a pattern in the entire string
result = re.search(r'\d+', 'There are 24 hours in a day.')
print(result.group())  # Output: 24

Использование регулярных выражений с группами

Группы используются для захвата частей совпавшего текста. Они определяются с помощью скобок. Например, чтобы извлечь определенные части шаблона, вы можете использовать группы:

pattern = r'(\d{3})-(\d{2})-(\d{4})'
text = 'My number is 123-45-6789.'

# Find all matches with groups
match = re.search(pattern, text)
if match:
    print(f'Area Code: {match.group(1)}')  # Output: 123
    print(f'Prefix: {match.group(2)}')     # Output: 45
    print(f'Suffix: {match.group(3)}')     # Output: 6789

Использование специальных символов

Регулярные выражения включают несколько специальных символов для более сложного сопоставления с шаблоном:

  • * — соответствует 0 или более вхождений предыдущего элемента.
  • + — Соответствует 1 или более вхождений предыдущего элемента.
  • ? - Соответствует 0 или 1 вхождению предыдущего элемента.
  • {n} — Соответствует ровно n вхождений предыдущего элемента.
  • | - Соответствует либо шаблону до него, либо шаблону после него.

Примеры

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

# Match a pattern with 0 or more occurrences
result = re.findall(r'\d*', '123 abc 456')
print(result)  # Output: ['123', '', '', '456']

# Match a pattern with 1 or more occurrences
result = re.findall(r'\d+', 'There are 24 apples and 3 oranges.')
print(result)  # Output: ['24', '3']

Замена текста регулярными выражениями

Функция re.sub() используется для замены частей строки, соответствующих шаблону:

text = 'The rain in Spain falls mainly in the plain.'

# Replace 'Spain' with 'France'
new_text = re.sub(r'Spain', 'France', text)
print(new_text)  # Output: The rain in France falls mainly in the plain.

Заключение

Регулярные выражения — это мощный инструмент для сопоставления с шаблонами и обработки текста в Python. С помощью модуля re вы можете искать, сопоставлять и заменять текст на основе сложных шаблонов. Понимая базовый синтаксис и специальные символы, вы можете эффективно использовать регулярные выражения для решения широкого спектра задач по обработке текста.