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
re.findall(): Returnează lista tuturor potrivirilor unui model într-un text.re.Match: group(), groups(), groupdict(), expand(): Metodele obiectului Match prin care citești textul găsit și grupurile capturate.re.Match: start(), end() și span(): Pozițiile de început și de sfârșit ale potrivirii sau ale unui grup din ea.