El comando 'o' en las expresiones regulares de Python
El comando '|', que representa
una versión más potente de 'o'
en comparación con el comando [ ]. Este comando
permite dividir la expresión regular en varias
partes. En este caso, lo buscado puede encajar
bien en una parte de la expresión regular, o en
otra. Veamos algunos ejemplos.
Ejemplo
En este ejemplo, el patrón de búsqueda es el siguiente:
tres letras 'a' o tres letras
'b':
txt = 'aaa bbb abb'
res = re.sub('a{3}|b{3}', '!', txt)
print(res)
Resultado de la ejecución del código:
'! ! abb'
Ejemplo
En este ejemplo, el patrón de búsqueda es el siguiente:
tres letras 'a' o desde 1
o más letras 'b':
txt = 'aaa bbb bbbb bbbbb axx'
res = re.sub('a{3}|b+', '!', txt)
print(res)
Resultado de la ejecución del código:
'! ! ! ! axx'
Ejemplo
En este ejemplo, el patrón de búsqueda es el siguiente: una o más letras o tres dígitos:
txt = 'a ab abc 1 12 123'
res = re.sub('[a-z]+|\d{3}', '!', txt)
print(res)
Resultado de la ejecución del código:
'! ! ! 1 12 !'
Ejemplo
La barra vertical puede dividir la expresión regular no en dos partes, sino en cualquier cantidad de partes:
txt = 'aaa bbb ccc ddd'
res = re.sub('a+|b+|c+', '!', txt)
print(res)
Resultado de la ejecución del código:
'! ! ! ddd'
Ejemplo
Si la barra vertical está dentro de paréntesis,
entonces 'o' funciona solo
dentro de esos paréntesis.
Como ejemplo, busquemos cadenas según
el siguiente patrón: al principio hay o
'a', o 'b' una o más
veces, y luego dos letras 'x':
txt = 'axx bxx bbxx exx'
res = re.sub('(a|b+)xx', '!', txt)
print(res)
Resultado de la ejecución del código:
'! ! ! exx'
Problemas prácticos
Dada la cadena:
txt = 'aeeea aeea aea axa axxa axxxa'
Escriba una expresión regular que encuentre las cadenas
según el patrón: en los extremos hay letras
'a', y entre ellas - o la letra
'e' cualquier cantidad de veces o la letra
'x' cualquier cantidad de veces.
Dada la cadena:
txt = 'aeeea aeea aea axa axxa axxxa'
Escriba una expresión regular que encuentre las cadenas
según el patrón: en los extremos hay letras
'a', y entre ellas - o la letra
'e' dos veces o la letra 'x'
cualquier cantidad de veces.