Ручной поиск vs re
❌ Ручной перебор
text = "Price: 199 USD, tax: 20 USD"
numbers = []
current = ""
for ch in text:
if ch.isdigit():
current += ch
else:
if current:
numbers.append(current)
current = ""
if current:
numbers.append(current)
print(numbers)
✅ Регулярное выражение
import re
numbers = re.findall(r"\d+", text)
print(numbers)
Методы строк vs regex
❌ Regex там, где достаточно строк
import re
if re.search(r"world", text):
print("found")
clean = re.sub(r"\s+", " ", text)
✅ Встроенные методы
if "world" in text:
print("found")
clean = " ".join(text.split())
Отсутствие raw string
❌ Без r
import re
# Надо удваивать каждый pattern = "\d+"
print(re.findall(pattern, "Age: 25"))
✅ С raw string
import re
pattern = r"\d+"
print(re.findall(pattern, "Age: 25"))
Простое разделение vs re.split
❌ Несколько вызовов replace
raw = "python, data / ML; AI"
for sep in ",/;":
raw = raw.replace(sep, " ")
tags = [t.strip() for t in raw.split() if t.strip()]
✅ re.split
import re
raw = "python, data / ML; AI"
tags = [t.strip() for t in re.split(r"[,/;\s]+", raw) if t.strip()]
Проверить по докуентации: современный Python рекомендует для читаемости и производительности предпочитать встроенные методы строк простым регулярным выражениям (см. String Methods).