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

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

1. Поиск совпадений

  • re.search(pattern, string) - ищет первое совпадение с шаблоном в строке

  • re.match(pattern, string) - ищет совпадение только в начале строки

  • re.fullmatch(pattern, string) - проверяет, соответствует ли вся строка шаблону

2. Поиск всех совпадений

  • re.findall(pattern, string) - возвращает список всех совпадений

  • re.finditer(pattern, string) - возвращает итератор с объектами совпадений

3. Замена текста

  • re.sub(pattern, repl, string) - заменяет все совпадения на repl

  • re.subn(pattern, repl, string) - аналогично sub, но возвращает кортеж (новая_строка, количество_замен)

4. Разделение строки

  • re.split(pattern, string) - разделяет строку по шаблону

Синтаксис регулярных выражений

Основные метасимволы

  • . - любой символ, кроме новой строки

  • ^ - начало строки

  • $ - конец строки

  • * - 0 или более повторений

  • + - 1 или более повторений

  • ? - 0 или 1 повторение

  • {n} - ровно n повторений

  • {n,} - n или более повторений

  • {n,m} - от n до m повторений

Классы символов

  • [abc] - любой из символов a, b или c

  • [a-z] - любой символ от a до z

  • [^abc] - любой символ, кроме a, b или c

  • \d - цифра (аналог [0-9])

  • \D - не цифра

  • \s - пробельный символ (пробел, табуляция, новая строка)

  • \S - не пробельный символ

  • \w - буквенно-цифровой символ или нижнее подчеркивание (аналог [a-zA-Z0-9_])

  • \W - не буквенно-цифровой символ

Группировка

  • ( ) - создает группу

  • (?: ) - не захватывающая группа (только для группировки)

  • | - логическое ИЛИ

  • \1, \2 - ссылки на группы

Специальные последовательности

  • \b - граница слова

  • \B - не граница слова

  • \A - начало строки (как ^, но в многострочном режиме работает иначе)

  • \Z - конец строки (как $, но в многострочном режиме работает иначе)

Флаги (модификаторы)

  • re.IGNORECASE (re.I) - игнорировать регистр

  • re.MULTILINE (re.M) - многострочный режим (^ и $ работают для начала/конца каждой строки)

  • re.DOTALL (re.S) - точка включает символ новой строки

  • re.ASCII - \w, \W, \b, \B, \d, \D, \s, \S соответствуют ASCII

  • re.VERBOSE (re.X) - позволяет писать более читаемые regex с комментариями

Примеры использования

import re

# Поиск первого совпадения
match = re.search(r'\d+', 'abc 123 def')
if match:
    print(match.group())  # 123

# Поиск всех совпадений
numbers = re.findall(r'\d+', '1, 2, 3, 4, 5')
print(numbers)  # ['1', '2', '3', '4', '5']

# Замена текста
text = re.sub(r'\s+', ' ', 'Много    пробелов   здесь')
print(text)  # 'Много пробелов здесь'

# Разделение строки
parts = re.split(r'[,;]\s*', 'one,two;three, four')
print(parts)  # ['one', 'two', 'three', 'four']

# Использование групп
match = re.search(r'(\w+)@(\w+\.\w+)', 'user@example.com')
if match:
    print(match.group(1))  # user
    print(match.group(2))  # example.com

# Использование флагов
text = 'Python is great\npython is versatile'
matches = re.findall(r'^python', text, flags=re.IGNORECASE | re.MULTILINE)
print(matches)  # ['Python', 'python']

Объекты совпадений (Match objects)

При успешном поиске возвращается объект Match с методами:

  • group() - возвращает совпавшую подстроку

  • group(n) - возвращает n-ю группу

  • groups() - возвращает кортеж всех групп

  • start() - начальная позиция совпадения

  • end() - конечная позиция совпадения

  • span() - кортеж (start, end)

Компиляция регулярных выражений

Для многократного использования шаблона его можно скомпилировать:

pattern = re.compile(r'\b\w{4}\b')  # слова из 4 букв 
matches = pattern.findall('This is a test string') 
print(matches)  # ['This', 'test']

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

 

Задачи для закрепления материала по регулярным выраженим можно посмотреть тут 

 

На  самом деле, эта информация не более чем освежить в памяти что такое регулярные выражения -реально мощный инструмент как для решения задач так и для практики. Если вы хотите более подробно почитать, что такое регулярные выражения то вам на Хабр вот ссылка. Там потрясающая статья о регулярках, подробно полно плюс практика по ним. Да, статья 2018 года, но с этого момента ни чего не поменялось в них.