re.sub() și re.subn() în Python

Înlocuiește toate potrivirile unui model cu un text sau cu rezultatul unei funcții.

Sintaxă
re.sub(model, inlocuitor, text, count=0, flags=0)
re.subn(model, inlocuitor, text, count=0, flags=0)

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ște r"\1".
  • Dai count sau flags ca al patrulea argument fără nume: re.sub(m, r, t, re.I) pune flag-ul în count. Scrie flags=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.