re
Las expresiones regulares en Python permiten realizar coincidencias y manipulaciones de patrones dentro de cadenas de texto. Python proporciona el módulo re
, que contiene funciones para trabajar con expresiones regulares de manera eficiente.
Las expresiones regulares son muy poderosas y útiles cuando necesitas buscar, extraer o modificar patrones específicos en texto. Sin embargo, pueden volverse complejas rápidamente, por lo que es importante entender bien el patrón que se está creando.
Las expresiones regulares están formadas por patrones que describen secuencias de caracteres. Aquí algunos símbolos y sus significados:
.
: Coincide con cualquier carácter (excepto nueva línea).
^
: Coincide con el comienzo de una cadena.
$
: Coincide con el final de una cadena.
*
: Coincide con cero o más repeticiones del patrón anterior.
+
: Coincide con una o más repeticiones del patrón anterior.
?
: Coincide con cero o una repetición del patrón anterior.
\d
: Coincide con cualquier dígito (equivalente a [0-9]).
\w
: Coincide con cualquier carácter alfanumérico (equivalente a [a-zA-Z0-9_]).
\s
: Coincide con cualquier carácter de espacio en blanco.
[abc]
: Coincide con cualquiera de los caracteres a, b, o c.
[^abc]
: Coincide con cualquier carácter excepto a, b, o c.
re.match()
: Verifica si el patrón coincide al inicio de la cadena.
import re
resultado = re.match(r'\d+', '123abc')
print(resultado.group()) # Salida: 123
re.search()
: Busca en toda la cadena hasta encontrar la primera coincidencia.
resultado = re.search(r'\d+', 'abc123def')
print(resultado.group()) # Salida: 123
re.findall()
: Devuelve todas las coincidencias encontradas en la cadena como una lista.
resultado = re.findall(r'\d+', 'abc123def456')
print(resultado) # Salida: ['123', '456']
re.sub():
Sustituye las coincidencias en la cadena por otro texto.
resultado = re.sub(r'\d+', 'X', 'abc123def456')
print(resultado) # Salida: abcXdefX
re.split()
: Divide una cadena en una lista de acuerdo con el patrón.
resultado = re.split(r'\d+', 'abc123def456')
print(resultado) # Salida: ['abc', 'def', '']
Coincidir correos electrónicos:
patron = r'\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b'
texto = "Mi correo es [email protected] y el de mi amigo es [email protected]"
correos = re.findall(patron, texto)
print(correos)
# Salida: ['[email protected]', '[email protected]']
Validar un número de teléfono (formato: 123-456-7890):
patron = r'\d{3}-\d{3}-\d{4}'
texto = "Mi número es 123-456-7890"
if re.search(patron, texto):
print("Número de teléfono válido")
else:
print("Número de teléfono no válido")
# Salida: Número de teléfono válido
re.IGNORECASE (o re.I): Hace que la búsqueda no distinga entre mayúsculas y minúsculas.
resultado = re.search(r'abc', 'ABC', re.IGNORECASE)
print(resultado) # Coincide
re.MULTILINE: Afecta a ^ y $ para que coincidan con el inicio y final de cada línea, no solo de toda la cadena.
texto = "Primera línea\nSegunda línea"
resultado = re.findall(r'^\w+', texto, re.MULTILINE)
print(resultado) # Salida: ['Primera', 'Segunda']