Sustitución de cadenas con el método sub() REGEX

Las expresiones regulares no sólo pueden encontrar patrones de texto, sino que también pueden sustituir un nuevo texto en lugar de esos patrones. Al método sub() de los objetos Regex se le pasan dos argumentos. El primer argumento es una cadena para reemplazar cualquier coincidencia. El segundo es la cadena de la expresión regular. El método sub() devuelve una cadena con las sustituciones aplicadas.

Por ejemplo, introduzca lo siguiente en el shell interactivo:

>>> import re
>>> namesRegex = re.compile(r'Agent \w+')
>>> namesRegex.sub('CENSORED', 'Agent Alice gave the secret documents to Agent Bob.')
'CENSORED gave the secret documents to CENSORED.'

A veces puede ser necesario utilizar el propio texto coincidente como parte de la sustitución. En el primer argumento de sub(), puede escribir \1, \2, \3, etc., para significar «Introduzca el texto del grupo 1, 2, 3, etc., en la sustitución».

Por ejemplo, digamos que quiere censurar los nombres de los agentes secretos mostrando sólo las primeras letras de sus nombres. Para ello, podría utilizar el Agent (\w)\w* y pasar r'\1****' como primer argumento a sub(). El \1 en esa cadena será reemplazado por cualquier texto que coincida con el grupo 1-es decir, el grupo (\w) de la expresión regular.

>>> agentNamesRegex = re.compile(r'Agent (\w)\w*')
>>> agentNamesRegex.sub(r'\1****', 'Agent Alice told Agent Carol that Agent
Eve knew Agent Bob was a double agent.')
A**** told C**** that E**** knew B**** was a double agent.'

Deja una respuesta