Método de substituição Regex em Python

Muhammad Waiz Khan 22 junho 2021
Método de substituição Regex em Python

Neste tutorial, examinaremos o uso e a função do método re.sub() e examinaremos os códigos de exemplo. O módulo re do Python fornece várias funcionalidades usando expressões regulares para strings Unicode e de 8 bits. As funcionalidades incluem substituição, divisão e combinação de strings, etc.

Regex Replace usando o método re.sub() em Python

O método re.sub(pattern, repl, string, count=0) leva a string como entrada e substitui as ocorrências mais à esquerda do pattern pelo repl. Se nenhum pattern for encontrado no argumento string, a string é retornada sem nenhuma alteração.

O argumento pattern deve estar na forma de uma expressão regular. O repl pode ser uma string ou uma função. Se o argumento repl for uma string, o pattern na string será substituído pela string repl. Se uma função for passada como o argumento repl, então a função será chamada sempre que uma ocorrência do pattern for encontrada. A função recebe o matchObject como entrada e retorna a string de substituição. O matchObject terá seu valor igual a True se a correspondência for encontrada e terá seu valor igual a None caso contrário.

O argumento opcional count representa o máximo de ocorrências do pattern que queremos substituir na string.

O código de exemplo a seguir demonstra como usar o método re.sub() para substituir algum padrão da string usando a expressão regular:

import re

string = "Hello! How are you?! Where have you been?!"
new_string = re.sub(r"""[!?'".<>(){}@%&*/[/]""", " ", string)
print(new_string)

Resultado:

Hello  How are you   Where have you been  

O exemplo de código acima remove os caracteres especificados no argumento pattern com o espaço em branco, que é nosso argumento repl no código acima.

Também podemos usar a função como o argumento repl para realizar a mesma tarefa, retornando " " sempre que uma ocorrência do argumento repl for encontrada, conforme mostrado no código de exemplo abaixo:

import re


def repl_func(match):
    if match == True:
        return " "


string = "Hello! How are you?! Where have you been?!"
new_string = re.sub(r"""[!?'".<>(){}@%&*/[/]""", repl_func, string)
print(new_string)

Resultado:

Hello How are you Where have you been

Artigo relacionado - Python Regex