re.Match: group(), groups(), groupdict(), expand() în Python

Expresii regulate (re) Python 3.0+ (m[1]: 3.6+)

Metodele obiectului Match prin care citești textul găsit și grupurile capturate.

Sintaxă
m.group(0) / m.group(1, 2) / m["nume"]
m.groups(default=None)
m.groupdict(default=None)
m.expand(sablon)

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.