Capturas na String de Substituição em Python
Ao trabalhar com o método sub, se
você precisa colocar algo em um grupo de captura na expressão regular,
na string de substituição você pode inserir o conteúdo
desse grupo de captura escrevendo uma barra invertida dupla \
e o número do grupo. Por exemplo, \1 -
primeiro grupo de captura, \2 - segundo grupo de captura
e assim por diante.
Vamos ver para que isso serve e como usar com exemplos.
Exemplo
Vamos encontrar todos os números e, em vez deles, inserir esses mesmos números, mas entre parênteses. Para isso, substituiremos todos os números encontrados por eles mesmos, mas entre parênteses:
txt = '1 23 456 xax'
res = re.sub('(\d+)', '(\1)', txt)
print(res)
Como resultado, será armazenado na variável o seguinte:
'(1) (23) (456) xax'
Exemplo
Vamos encontrar todas as strings que representam
números com 'x' ao redor e substituir esses
números por eles mesmos, mas com '!'
ao redor:
txt = 'x1x x23x x456x xax'
res = re.sub('x(\d+)x', '!\1!', txt)
print(res)
Como resultado, será armazenado na variável o seguinte:
'!1! !23! !456! xax'
Exemplo
Vamos resolver o seguinte problema: dada a string
'aaa@bbb ccc@ddd' - letras, depois
arroba, depois letras. Precisamos trocar a ordem
das letras na substring 'aaa@bbb' antes
da '@' e depois:
txt = 'aaa@bbb ccc@ddd'
res = re.sub('([a-z]+)@([a-z]+)', '\2@\1', txt)
print(res)
Como resultado, será armazenado na variável o seguinte:
'bbb@aaa ccc@ddd'
Problemas Práticos
Dada a string:
txt = '12 34 56 78'
Troque a ordem dos dígitos em todos os números de dois dígitos.
Dada uma string com uma data:
txt = '31.12.2025'
Converta esta data para '2025.12.31'.