Método de reemplazo de expresiones regulares en Python

Muhammad Waiz Khan 18 julio 2021
Método de reemplazo de expresiones regulares en Python

En este tutorial, veremos el uso y la función del método re.sub() y veremos los códigos de ejemplo. El módulo re de Python proporciona las diversas funcionalidades utilizando expresiones regulares tanto para Unicode como para cadenas de 8 bits. Las funcionalidades incluyen reemplazo, división y emparejamiento de cadenas, etc.

Reemplazo de expresiones regulares usando el método re.sub() en Python

El método re.sub(pattern, repl, string, count=0) toma la string como entrada y reemplaza las ocurrencias más a la izquierda del pattern con la repl. Si no se encuentra ningún pattern en el argumento cadena, la cadena se devuelve sin ningún cambio.

El argumento pattern debe tener la forma de una expresión regular. La repl puede ser una cadena o una función. Si el argumento repl es una cadena, entonces el pattern en la string se reemplaza por la cadena repl. Si se pasa una función como argumento repl, entonces se llamará a la función siempre que se encuentre una ocurrencia del pattern. La función toma el matchObject como entrada y devuelve la cadena de reemplazo. El matchObject tendrá su valor igual a True si se encuentra la coincidencia y tendrá su valor igual a None en caso contrario.

El argumento opcional count representa el número máximo de apariciones del pattern que queremos reemplazar en la string.

El siguiente código de ejemplo demuestra cómo usar el método re.sub() para reemplazar algún patrón de la cadena usando la expresión regular:

import re

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

Producción :

Hello  How are you   Where have you been  

El ejemplo de código anterior elimina los caracteres especificados en el argumento pattern con el espacio en blanco, que es nuestro argumento repl en el código anterior.

También podemos usar la función como argumento repl para realizar la misma tarea devolviendo " " siempre que se encuentre una ocurrencia del argumento repl, como se muestra en el siguiente código de ejemplo:

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)

Producción :

Hello How are you Where have you been

Artículo relacionado - Python Regex