Ce face re.Match: group(), groups(), groupdict(), expand()
Funcțiile search, match, fullmatch și finditer returnează obiecte re.Match. group(0) (sau group()) este tot textul găsit, group(1) primul grup, iar group("nume") un grup cu nume, definit cu (?P<nume>...). Din Python 3.6 poți scrie și m[1] sau m["nume"].
groups() returnează tuplul tuturor grupurilor, iar groupdict() dicționarul grupurilor cu nume; pentru grupurile care nu au participat la potrivire apare default (implicit None). expand(sablon) completează un șablon cu grupurile, ca înlocuitorul din re.sub().
Parametri
| Parametru | Descriere |
|---|---|
group |
Numărul sau numele grupului; mai multe grupuri dau un tuplu. |
default |
Valoarea pentru grupurile neparticipante. |
sablon |
Pentru expand: text cu \1 sau \g<nume>. |
Ce returnează
Texte, tupluri sau dicționare, după metodă.
Exemple
Exemplul 1: Grupuri numerotate și cu nume
import re
m = re.search(r"(?P<nume>\w+) (?P<prenume>\w+), (?P<varsta>\d+)( ani)?", "Popescu Ana, 25")
print(m.group(0))
print(m.group(1), m["prenume"], m.group("varsta"))
print(m.groups())
print(m.groups(default=""))
print(m.groupdict())
print(m.expand(r"\g<prenume> \g<nume> (\3)"))
Rezultat
Popescu Ana, 25
Popescu Ana 25
('Popescu', 'Ana', '25', None)
('Popescu', 'Ana', '25', '')
{'nume': 'Popescu', 'prenume': 'Ana', 'varsta': '25'}
Ana Popescu (25)
Greșeli frecvente
- Ceri un grup care nu există:
m.group(5)dăIndexError: no such group.
Comenzi înrudite
re.Match: start(), end() și span(): Pozițiile de început și de sfârșit ale potrivirii sau ale unui grup din ea.re.search(): Caută prima potrivire a unei expresii regulate oriunde într-un text.re.finditer(): Parcurge toate potrivirile unui model, dând pentru fiecare un obiect Match cu poziție și grupuri.