📦 Импорт:
import re
🔍 Основные функции модуля
re
re.search(pattern, string) # Ищет первое совпадение (где угодно в строке)
re.match(pattern, string) # Ищет совпадение только в начале строки
re.fullmatch(pattern, string) # Проверяет, соответствует ли вся строка шаблону
re.findall(pattern, string) # Возвращает все совпадения в виде списка
re.finditer(pattern, string) # То же, но как итератор Match-объектов
re.sub(pattern, repl, string) # Замена по шаблону
re.split(pattern, string) # Разбиение строки по шаблону
# 🧠 Основы синтаксиса шаблонов
| Шаблон | Что значит |
|---------|-------------------------------------|
|
.
| Любой символ, кроме \n
||
^
| Начало строки ||
$
| Конец строки ||
*
| 0 или больше повторений ||
+
| 1 или больше ||
?
| 0 или 1 повторение ||
{n}
| ровно n раз ||
{n,}
| n или больше ||
{n,m}
| от n до m ||
[]
| Символьный класс ||
[^]
| Отрицание символьного класса ||
|
| Или (`a|b`) ||
()
| Группа (захват) ||
\
| Экранирование спецсимвола |💡 Примеры
re.search(r'\d+', 'ID=12345') # Найдёт '12345' (одно или больше цифр)
re.match(r'^\w+$', 'hello_world') # Вся строка — только буквы/цифры/_
re.findall(r'[A-Z][a-z]+', 'Mr. Smith and Dr. Brown') # ['Smith', 'Brown']
re.sub(r'\s+', '-', 'a b c') # 'a-b-c'
re.split(r'[;,\s]\s*', 'one, two;three four') # ['one', 'two', 'three', 'four']
🎯 Захват групп
text = 'Name: John, Age: 30'
match = re.search(r'Name: (\w+), Age: (\d+)', text)
if match:
print(match.group(1)) # John
print(match.group(2)) # 30
Группы можно называть:
pattern = r'(?P<name>\w+): (?P<value>\d+)'
match = re.search(pattern, 'score: 42')
match.group('name') # 'score'
match.group('value') # '42'
🧱 Комбинированные шаблоны
pattern = r'\b(?:https?://)?(www\.)?\w+\.\w+\b'
text = 'Visit https://example.com or www.test.org'
re.findall(pattern, text) # [['www.'], ['www.']]
⚠️ Полезные советы
• Всегда используйте
r''
перед шаблоном, чтобы не экранировать \
•
re.compile(pattern)
ускоряет повторное использование • Старайтесь избегать
re.match
— чаще нужен re.search
✅ Быстрая проверка шаблонов
📍 Онлайн-проверка:
- https://regex101.com/
- https://pythex.org/
Хочешь отдельную шпаргалку по
re.sub
с лямбдами, заменами и функциями внутри, ставь лайк 👍@pythonl