❌ Ошибка 1. Забыть raw string
# Неправильно
import re
print(re.findall("\d+", "Age: 25")) # []
Почему: без r строка "\d" превращается в "d".
✅ Исправление
print(re.findall(r"\d+", "Age: 25")) # ['25']
❌ Ошибка 2. re.match вместо re.search
# Неправильно
import re
# Хотим найти ID в любом месте строки
print(re.match(r"ID\d+", "User: ID123")) # None
Почему: re.match проверяет только начало строки.
✅ Исправление
print(re.search(r"ID\d+", "User: ID123").group()) # ID123
❌ Ошибка 3. Жадный квантификатор
# Неправильно
import re
text = "<div>Hello</div>"
print(re.findall(r"<.*>", text)) # ['<div>Hello</div>']
Почему: .* старается захватить максимум символов.
✅ Исправление
print(re.findall(r"<.*?>", text)) # ['<div>', '</div>']
❌ Ошибка 4. Неэкранированная точка
# Неправильно
import re
print(re.findall(r"report.txt", "reportXtxt report.txt"))
# ['reportXtxt', 'report.txt'] — точка совпала с X
Почему: точка . в regex означает «любой символ».
✅ Исправление
print(re.findall(r"report\.txt", "reportXtxt report.txt")) # ['report.txt']
❌ Ошибка 5. Regex там, где достаточно строк
# Неправильно
import re
if re.search(r"error", log_line):
...
Почему: лишняя сложность и медленнее, чем встроенные методы.
✅ Исправление
if "error" in log_line:
...