Grupuri de captură în șirul de înlocuire în Python
Când lucrați cu metoda sub, dacă
trebuie să capturați ceva în expresia regulată,
în șirul de înlocuire puteți insera conținutul
acelui grup de captură scriind backslash dublu \
și numărul grupului. De exemplu, \1 -
primul grup de captură, \2 - al doilea grup de captură
și așa mai departe.
Pentru ce este util și cum să folosiți acest lucru să vedem pe exemple.
Exemplu
Să găsim toate numerele și în locul lor să inserăm aceleași numere, dar între paranteze rotunde. Pentru asta toate numerele găsite le vom înlocui cu ele însele, dar între paranteze:
txt = '1 23 456 xax'
res = re.sub('(\d+)', '(\1)', txt)
print(res)
Ca rezultat în variabilă se va scrie următorul text:
'(1) (23) (456) xax'
Exemplu
Să găsim toate șirurile care reprezintă
numere înconjurate de 'x' și să înlocuim aceste
numere cu ele însele, dar înconjurate de semnele '!':
txt = 'x1x x23x x456x xax'
res = re.sub('x(\d+)x', '!\1!', txt)
print(res)
Ca rezultat în variabilă se va scrie următorul text:
'!1! !23! !456! xax'
Exemplu
Să rezolvăm următoarea problemă: este dat șirul
'aaa@bbb ccc@ddd' - litere, apoi
simbolul @, apoi litere. Trebuie să schimbăm locurile
literelor în subșirul 'aaa@bbb' dinainte de
'@' și după:
txt = 'aaa@bbb ccc@ddd'
res = re.sub('([a-z]+)@([a-z]+)', '\2@\1', txt)
print(res)
Ca rezultat în variabilă se va scrie următorul text:
'bbb@aaa ccc@ddd'
Probleme practice
Este dat șirul:
txt = '12 34 56 78'
Schimbați locurile cifrelor în toate numerele din două cifre.
Este dat șirul cu data:
txt = '31.12.2025'
Transformați această dată în '2025.12.31'.