re.finditer() în Python

Parcurge toate potrivirile unui model, dând pentru fiecare un obiect Match cu poziție și grupuri.

Sintaxă
re.finditer(model, text, flags=0)

Ce face re.finditer()

re.finditer() returnează un iterator de obiecte Match, câte unul pentru fiecare potrivire. Spre deosebire de findall(), ai acces la poziții (start(), end()), la grupurile cu nume și la textul complet, iar potrivirile sunt produse pe rând, fără să construiască o listă mare.

Pattern.finditer() este varianta pentru modele compilate, cu parametrii opționali pos și endpos.

Parametri

Parametru Descriere
model Expresia regulată.
text Textul în care se caută.
flags Opțional. Flag-uri.

Ce returnează

Un iterator de obiecte re.Match.

Exemple

Exemplul 1: Poziții și grupuri cu nume

import re
text = "Comenzi: #101 (Ana), #205 (Mihai)"
for m in re.finditer(r"#(?P<id>\d+) \((?P<client>\w+)\)", text):
    print(m.start(), m["id"], m["client"])

Rezultat

9 101 Ana
21 205 Mihai

Greșeli frecvente

  • Parcurgi rezultatul de două ori. Este un iterator; a doua oară nu mai produce nimic.

Comenzi înrudite