Ce face re.sub() și re.subn()
re.sub() returnează textul în care fiecare potrivire a modelului a fost înlocuită. În înlocuitor poți folosi grupurile capturate: \1, \2 sau \g<nume>. Înlocuitorul poate fi și o funcție, care primește obiectul Match și returnează textul de pus în loc.
re.subn() face același lucru, dar returnează tuplul (text_nou, numar_inlocuiri). count limitează numărul de înlocuiri. Din Python 3.13, count și flags trebuie date cu nume; ca argumente poziționale produc DeprecationWarning. Modelele compilate au Pattern.sub() și Pattern.subn().
Parametri
| Parametru | Descriere |
|---|---|
model |
Expresia regulată. |
inlocuitor |
Textul de înlocuire (cu \1, \g<nume>) sau o funcție. |
text |
Textul prelucrat. |
count |
Opțional, cu nume. Numărul maxim de înlocuiri. |
flags |
Opțional, cu nume. Flag-uri. |
Ce returnează
sub: textul nou. subn: tuplul (text, număr).
Exemple
Exemplul 1: Curățare și reordonare
import re
print(re.sub(r"\s+", " ", "prea multe spații"))
print(re.sub(r"(\d{4})-(\d{2})-(\d{2})", r"\3.\2.\1", "Data: 2026-10-19"))
print(re.subn(r"\d", "#", "PIN 1234"))
print(re.sub(r"a", "A", "banana", count=1))
Rezultat
prea multe spații
Data: 19.10.2026
('PIN ####', 4)
bAnana
Exemplul 2: Înlocuitor calculat de o funcție
import re
def cu_tva(m):
pret = float(m.group(1))
return f"{pret * 1.21:.2f} lei"
text = "Pâine 4.50 lei, cafea 30 lei"
print(re.sub(r"(\d+(?:\.\d+)?) lei", cu_tva, text))
Rezultat
Pâine 5.45 lei, cafea 36.30 lei
Greșeli frecvente
- Scrii înlocuitorul fără
r:"\1"devine caracterul cu codul 1, nu grupul 1. Foloseșter"\1". - Dai
countsauflagsca al patrulea argument fără nume:re.sub(m, r, t, re.I)pune flag-ul încount. Scrieflags=re.I.
Comenzi înrudite
str.replace(): Înlocuiește într-un text toate aparițiile unui subșir cu altul.re.findall(): Returnează lista tuturor potrivirilor unui model într-un text.re.compile(): Compilează o expresie regulată într-un obiect Pattern, refolosibil și mai ușor de citit.