La agrupación y la alternancia son dos herramientas importantes en la sintaxis de las expresiones regulares (Regex). Con la agrupación podemos hacer coincidir patrones que se repiten dentro de una cadena de texto, mientras que con la alternancia podemos especificar varias opciones posibles para el patrón que estamos buscando. La agrupación se realiza mediante el uso de paréntesis ().
Todos los caracteres dentro de los paréntesis se agrupan juntos para que la expresión regular los trate como un solo elemento. Por ejemplo, la expresión "a(bc)+d" coincide con cadenas que contengan una "a" seguida de una o más repeticiones de la secuencia "bc" y finalmente una "d". La alternancia se realiza con el uso del símbolo de barra vertical "|" que indica opciones posibles.
Por ejemplo, la expresión "(perro|gato)" coincide con cadenas que contienen la palabra "perro" o la palabra "gato". En resumen, la agrupación y la alternancia son herramientas poderosas que permiten a los programadores encontrar patrones específicos en las cadenas de texto utilizando expresiones regulares en Python.
El agrupamiento en regex se usa para combinar múltiples elementos juntos, como si fueran una sola unidad. Esto permite aplicar ciertas operaciones a toda la unidad en lugar de a cada uno de ellos por separado.
En regex, se usan paréntesis para especificar un grupo. Por ejemplo, si queremos hacer una búsqueda de cualquier combinación de las letras "abc" seguida de cualquier número del 0 al 9, podemos utilizar un grupo de la siguiente manera:
import re
texto = "abc9xyz abc4xyz abc1xyz abc8xyz"
resultado = re.findall("(abc[0-9])", texto)
print(resultado)
Este código encontrará cualquier coincidencia de "abc" seguido de un número del 0 al 9 en el texto proporcionado (en este caso, "abc9", "abc4", "abc1" y "abc8"). Alternación en regex permite la especificación de múltiples elementos para buscar. En esencia, indica que se quiere buscar cualquiera de los elementos especificados.
En regex, se usa el símbolo "|" para indicar alternación. Por ejemplo, si queremos buscar cualquier palabra que sea "gato" o "perro" en un texto, podemos utilizar el símbolo "|" de la siguiente manera:
import re
texto = "Me gusta tener un gato y un perro en casa"
resultado = re.findall("(gato|perro)", texto)
print(resultado)
Este código encontrará cualquier coincidencia de "gato" o "perro" en el texto proporcionado (en este caso, "gato" y "perro"). Espero que esto haya sido útil y que hayas comprendido el agrupamiento y la alternación en regex.
Un ejemplo practico de agrupamiento y alternación en Regex con Python. Supongamos que tenemos una lista de nombres y queremos crear una expresión regular que extraiga los nombres que comienzan con "Ana" o "Eva", pero solo si tienen una longitud de 6 caracteres.
La expresión regular para esto sería: ``` ^(Ana|Eva)[A-Za-z]{3}$ ``` Aquí, usamos paréntesis para agrupar alternativas de nombres que comienzan con "Ana" y "Eva". Después de eso, agregamos una cadena de expresión regular `[A-Za-z]{3}` para capturar cualquier letra que siga después de "Ana" o "Eva".
Y finalmente, estipulamos que solo queremos que coincida con los nombres que tengan una longitud total de 6 caracteres mediante el uso de los anclas `^` y `$`.
Ahora, en Python podríamos escribir un script que use esta expresión regular para extraer los nombres correspondientes de una lista. El siguiente código sería un ejemplo:
import re
nombres = [ "AnaLía", "EvaLina", "Evaristo", "Anabella", "Anabel", "EvaLópez" ]
patron = "^(Ana|Eva)[A-Za-z]{3}$"
for nombre in nombres:
if re.match(patron, nombre):
print(nombre)
Este script imprimirá en la salida estándar solo los nombres "AnaLía" y "EvaLina", cada uno en su propia línea, ya que son los únicos nombres que cumplen con la expresión regular dada.
El agrupamiento en Regex se utiliza para agrupar una secuencia de caracteres y aplicar una operación en conjunto. Por ejemplo, podemos usar agrupamiento para hacer coincidir una palabra que comience con una letra mayúscula seguida de cualquier cantidad de letras minúsculas:
import re
texto = "Juan, Pedro y María se fueron al Parque"
patron = r"([A-Z][a-z]+)+"
coincidencias = re.findall(patron, texto)
print(coincidencias)
#La salida de este código será:['Juan', 'Pedro', 'María', 'Parque']
Como podemos ver, el agrupamiento nos permitió encontrar las palabras que cumplen con la expresión regular `([A-Z][a-z]+)`, es decir, una letra mayúscula seguida de cualquier cantidad de letras minúsculas.
La alternación, por su parte, nos permite hacer coincidir varias opciones en una misma expresión regular. Por ejemplo, podemos usar la alternación para encontrar teléfonos en diferentes formatos:
import re
texto = "Mi teléfono es 555-1234 y mi celular es 555-5678"
patron = r"\d{3}-\d{4}|\d{10}"
coincidencias = re.findall(patron, texto)
print(coincidencias)
La salida de este código será: ``` ['555-1234', '555-5678'] ``` En este caso, usamos la alternación con el símbolo | para hacer coincidir números de teléfono en formato 555-1234 o en formato de 10 dígitos (`\d{10}`). De esta manera, encontramos tanto el número de teléfono como el número de celular en el texto.
-
Introducción a las expresiones regulares (Regex)
-
Sintaxis básica de Regex en Python
-
Caracteres especiales y comodines en Regex
-
Cuantificadores: repetición y rangos
-
Conjuntos de caracteres en Regex
-
Agrupamiento y alternación en Regex
-
Combinación de técnicas de Regex
-
Uso de Regex en la manipulación de archivos de texto
-
Uso de Regex en web scraping (raspado de webs)
-
Mejoras de performance en aplicaciones con Regex