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

Основные функции модуля re:

  • re.match() – проверяет, начинается ли строка с заданного шаблона.
  • re.search() – ищет заданный шаблон в строке и возвращает первое совпадение.
  • re.findall() – возвращает все неперекрывающиеся совпадения шаблона в строке в виде списка.
  • re.finditer() – возвращает итератор сопоставлений шаблона в строке.
  • re.sub() – заменяет совпадения шаблона на заданную строку.
  • re.split() – разбивает строку по заданному шаблону.

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

import re

# Пример строки
text = 'У меня есть 2 яблока и 3 апельсина.'

# Поиск всех чисел
numbers = re.findall(r'd+', text)
print(numbers)  # Вывод: ['2', '3']

# Замена чисел на слово 'число'
new_text = re.sub(r'd+', 'число', text)
print(new_text)  # Вывод: 'У меня есть число яблока и число апельсина.'

Объяснение примера:

  • Мы импортировали модуль re.
  • Создали строку text, в которой есть числа.
  • С помощью re.findall() мы ищем все числа в строке. Используем шаблон r'd+', где d обозначает цифру, а + – один или более раз.
  • С помощью re.sub() заменяем все числа на слово ‘число’.

Шаблоны регулярных выражений:

  • d – соответствует любой цифре.
  • D – соответствует любому символу, который не является цифрой.
  • w – соответствует любому алфавитно-цифровому символу (буквы и цифры).
  • W – соответствует любому символу, который не является алфавитно-цифровым.
  • s – соответствует любому пробельному символу (пробел, табуляция, новая строка).
  • S – соответствует любому символу, который не является пробелом.
  • ^ – соответствует началу строки.
  • $ – соответствует концу строки.
  • . – соответствует любому символу, кроме новой строки.

Флаги регулярных выражений:

  • re.IGNORECASE – игнорирует регистр при поиске.
  • re.MULTILINE – позволяет использовать ^ и $ для каждой строки в многострочном тексте.
  • re.DOTALL – позволяет . соответствовать любому символу, включая новую строку.

Пример с флагами:

text = 'Привет
Как дела?'

# Ищем 'привет' без учета регистра
match = re.search(r'привет', text, re.IGNORECASE)
if match:
    print('Найдено:', match.group())

Заключение: Регулярные выражения – это очень мощный инструмент для работы с текстом в Python. Они позволяют быстро и эффективно выполнять поиск и замену строк, а также валидацию данных. Изучив основные функции и шаблоны, вы сможете решать множество задач, связанных с обработкой текста.