Ajude nosso projeto a se manter online, faça um PIX de qualquer valor: 029 278 923 85

Substituindo strings: Método sub() (Tutorial de Regex Parte 8)

Vamos aprender neste tutorial de Regex em Python, como fazer substituições em strings que estamos trabalhando, em expressões regulares, através do método sub()


Fazer Substituição em Regex: Método sub()


Até o momento, em nossos tutoriais de regex, aprendemos a detectar determinados padrões em textos, usando expressão regular.

Porém, é comum que, ao invés de apenas detectar, queiramos substituir uma coisa por outra.
Por exemplo, se seu amigo diz:
- Funk é o melhor estilo musical

Seria legal ser substituído por:
- Rock é o melhor estilo musical

Isso pode ser feito através do método sub(), presentes em objetos Regex.
Esse método recebe dois argumentos:
A string, o texto ou valor que vamos querer colocar no lugar de outra
A string onde irá ocorrer a substituição

Ou seja: minhaRegex.sub( substituirPorIsso, antigaString)

O script abaixo substituir o padrão 'Funk' por 'Heavy Metal':
import re

while True:
	texto = input("Digite sua string: " )

	minhaRegex = re.compile(r'Funk')
	minhaRegex = minhaRegex.sub('Heavy Metal', texto)
	
	print(minhaRegex)

Veja o resultado:
Tutorial de Regex em Python

Texto correspondente na substituição: \1, \2, \3...

Muitas vezes, é comum que queiramos usar o texto correspondente (que vai ser encontrado pelo padrão), pra usar na própria substituição.

Por exemplo, o primeiro grupo da Regex, será simbolizado por \1.
O segundo grupo, por \2 .
E assim por diante.

Por exemplo, a string de regex: r'padrao1(padrao2)padrao3(padrao4)'
O padrao2 pode ser simbolizado por \1
O padrao4 pode ser simbolizado por \2

O script abaixo detecta se foi digitado Funk.
Se sim, essa correspondência vai ser armazenada em \1

Então, substituímos ela por '\1 (eca)'
Ou seja, onde tiver 'Funk', vai aparecer 'Funk (eca)':



import re

while True:
	texto = input("Digite sua string: " )

	minhaRegex = re.compile(r'(Funk)')
	minhaRegex = minhaRegex.sub('\1 (eca)', texto)
	
	print(minhaRegex


Nenhum comentário:

Postar um comentário