Expresiones regulares en Python: uso de tuberías

Hace algunos días mostramos ejemplos de expresiones regulares en Python. A través de las funciones provistas por el módulo re, disponemos de herramientas muy potentes para el proceso de texto. En esta ocasión compartiremos el concepto de tuberías, y mostraremos cómo especificar varias expresiones regulares al mismo tiempo. De esa manera, la presencia de una cadena de texto que cumpla cualquiera de ellas hará que obtengamos un match object. ¡Comencemos!

Tuberías en las expresiones regulares en Python

Para empezar, recordemos que hasta ahora solamente hemos definido una única expresión regular en cada caso. En una oportunidad se trató de una dirección de correo electrónico y en otra de un número telefónico. ¿Pero qué sucede si deseamos especificar dos o más expresiones regulares, y verificar la presencia de texto que cumpla cualquiera de ellas? En tal caso deberemos crear una expresión regular como de costumbre pero encerrando la lista de posibles alternativas entre paréntesis (formando lo que se llama un grupo) y separándolas mediante una tubería.

Por ejemplo, para detectar la presencia de las palabras Batman, Superman, Aquaman, o Spiderman, haremos uso de las siguientes expresiones:

import re
superHeroes = re.compile(r'(Bat|Super|Aqua|Spider)man')
mo = superHeroes.search('Mi súper héroe favorito es el Batman de Chris Bale')
mo.group()
mo.group(1)

Como explicamos en el post anterior, el método group() del match object devolverá la parte de la cadena de texto donde se halló la coincidencia. Por otra parte, group(1) nos mostrará el string del grupo que participó en la coincidencia. En la Fig. 1 podemos ver el resultado del ejemplo anterior:

Uso de grupos y tuberías en las expresiones regulares en Python
Figura 1 – Uso de grupos y tuberías en las expresiones regulares en Python

Resumen

Finalmente, para buscar una coincidencia entre varias posibles deberemos seguir estos pasos:

  1. Importar el módulo re.
  2. Compilar la expresión regular deseada indicando los strings alternativos separados por |.
  3. Utilizar la función search() con la cadena que se desea examinar como argumento a fin de crear un match object.
  4. Llamar el método group() para regresar la concidencia. En este último paso, es conveniente utilizar un if para confirmar la existencia de un matching object primero:
if mo:
    mo.group()
    mo.group(1)

Espero que este post les haya resultado útil. ¡Hasta el próximo!