Expresiones Regulares en Python [Con Ejemplos]: ¿Cómo Implementar?
Publicado: 2021-01-29Al procesar datos sin procesar de cualquier fuente, es importante extraer la información correcta para que se puedan obtener conocimientos significativos de los datos. A veces se vuelve difícil extraer el patrón específico de los datos, especialmente en el caso de los datos textuales.
Los datos textuales consisten en párrafos de información recopilada a través de formularios de encuesta, sitios web de desguace y otras fuentes. El Channing de diferentes descriptores de cadena con funciones pandas u otras funciones personalizadas puede hacer el trabajo, pero ¿qué pasa si se necesita obtener un patrón más específico? Las expresiones regulares hacen este trabajo con facilidad.
Tabla de contenido
¿Qué es una expresión regular (RegEx)?
Una expresión regular es una representación de un conjunto de caracteres para cadenas. Presenta una fórmula generalizada para un patrón particular en las cadenas que ayuda a segregar la información correcta del grupo de datos. La expresión suele constar de símbolos o caracteres que ayudan a formar la regla pero, a primera vista, puede parecer rara y difícil de comprender. Estos símbolos tienen significados asociados que se describen aquí.
Aprenda cursos de ciencia de datos de las mejores universidades del mundo. Obtenga programas Executive PG, programas de certificados avanzados o programas de maestría para acelerar su carrera.
Metacaracteres en RegEx
- '.': es un comodín, coincide con un solo carácter (cualquier carácter, pero solo una vez)
- ^: denota el comienzo de la cadena
- $: denota el final de la cadena
- [ ]: coincide con uno de los conjuntos de caracteres dentro de [ ]
- [az]: coincide con uno del rango de caracteres a,b,…,z
- [^abc]: coincide con un carácter que no es a, b o c.
- a|b: coincide con a o b, donde a y b son cadenas
- () : proporciona alcance para los operadores
- \ : habilita el escape para caracteres especiales (\t, \n, \b, \.)
- \b: coincide con el límite de la palabra
- \d : cualquier dígito, equivalente a [0-9]
- \D: cualquier no dígito, equivalente a [^0-9]
- \s : cualquier espacio en blanco, equivalente a [ \t\n\r\f\v]
- \S : cualquier espacio que no sea en blanco, equivalente a [^\t\n\r\f\v]
- \w : cualquier alfanumérico, equivalente a [a-zA-Z0-9_]
- \W : cualquier no alfanumérico, equivalente a [^a-zA-Z0-9_]
- '*': coincide con cero o más ocurrencias
- '+': coincide con una o más ocurrencias
- '?': coincide con cero o una ocurrencia
- {n}: exactamente n repeticiones, n>=0
- {n,}: al menos n repeticiones
- {,n}: como máximo n repeticiones
- {m,n}: al menos m repeticiones y como máximo n repeticiones
Ejemplos para entender la solución alternativa
Ahora que conoce los caracteres que componen un RegEx, veamos cómo funciona esto:
1. Filtrado de correo electrónico:
Suponga que desea filtrar todas las identificaciones de correo electrónico de un párrafo largo. El formato general para un correo electrónico es:
usuario@nombre_de_dominio. <dominio_de_nivel_superior>
El nombre de usuario puede ser alfanumérico, y por lo tanto, podemos usar \w para denotarlos pero existe la posibilidad de que el usuario cree una cuenta como nombre.apellido. Para abordar esto, escaparemos del punto y crearemos un conjunto de caracteres. A continuación, nombre_dominio debe ser solo alfabético y, por lo tanto, A-Za-z lo denotará. El dominio de nivel superior suele ser .com, .in, .org, pero según el caso de uso, puede elegir el rango alfabético completo o filtrar dominios específicos.
La expresión regular de esto se verá así:
^([a-zA-Z0-9_.]+)@([a-zA-Z0-9-]+)\.([a-zA-Z]{2,4})$
Aquí también se declaran el inicio y el final del patrón, y el dominio de nivel superior solo puede contener de 2 a 4 caracteres. La expresión completa tiene 3 grupos.
2. Filtrado de fechas:
La información textual que está extrayendo puede contener las fechas y no hay una columna separada disponible para usted. Las fechas son un factor esencial que ayuda en el filtrado de datos o análisis de series temporales. Una fecha en particular toma el formato de fecha/mes/año, donde la fecha y el mes pueden intercambiarse.
Además, los meses pueden ser tanto numéricos como alfabéticos y en alfabetos, ya sea abreviaturas o nombres completos. Depende principalmente de cuántos casos están presentes en nuestros datos y solo se puede lograr mediante acierto y prueba.
A continuación se muestra un RegEx simple que cubre una variedad de fechas:

^(\d{1,2})[/-](\d{1,2})[/-](\d{2,4})$
Este patrón captura el formato de fecha con un guión o una barra inclinada. La fecha y el mes se limitan a uno o dos dígitos y el año a 40 dígitos. Las entidades respectivas se capturan como grupos que son opcionales en este caso.
Lea también: Ideas y temas de proyectos de Python
¿Cómo implementarlo en Python?
Las expresiones regulares que acabamos de crear cumplen los criterios respectivos que asumimos y ahora es el momento de implementarlas en el código de Python. Python tiene un módulo incorporado llamado re module que implementa el funcionamiento de estas expresiones. Simplemente,
importar re
patrón = '^(\d{1,2})[/-](\d{1,2})[/-](\d{2,4})$'
El módulo Re ofrece una amplia gama de funciones y todas ellas tienen diferentes casos de uso. Veamos algunas de las funciones importantes:
- re.findall(): esta función devuelve la lista de todas las coincidencias en la cadena de prueba según el patrón aprobado. Considere este ejemplo:
string = '25-12-1999 texto aleatorio aquí 25/12/1999'
imprimir (re.findall (patrón, cadena))
Devolverá solo las fechas de la cadena en una lista.
- re.sub(): Sub en esta función significa sustitución y hace lo mismo. Sustituye las cerillas por el valor de reposición proporcionado. La función toma el patrón, la cadena, el valor de reemplazo y el parámetro opcional del conteo. El parámetro de conteo controla cuántas ocurrencias desea reemplazar. De forma predeterminada, los reemplaza a todos y devuelve la nueva cadena.
- re.split(): divide la cadena en los sitios coincidentes y devuelve las partes como cadenas separadas en una lista.
- re.search(): esta función devuelve el objeto de coincidencia que contiene la coincidencia encontrada en la cadena junto con todos los grupos que capturó. Puede ser útil cuando desea almacenar estos grupos como columnas separadas.
Para realizar esto:
coincidencia = re.buscar(patrón, cadena)
partido.grupo(1)
Group(0) devuelve la coincidencia completa y los siguientes números correspondientes indican otros grupos.
Pago: salario de desarrollador de Python en India
Conclusión
Las expresiones regulares son una forma poderosa de capturar patrones en datos textuales. Puede requerir un poco de esfuerzo adicional controlar los diversos caracteres, pero simplifica el proceso de extracción de datos en casos de uso complejos.
Dé algunos ejemplos de expresiones regulares en Python.
Los siguientes ejemplos ilustran el funcionamiento o las expresiones regulares en Python:
un. Filtrado de correo electrónico
Las expresiones regulares se pueden usar de manera eficiente para filtrar correos electrónicos. La sintaxis normal para el filtrado de correo electrónico es - ^((a-zA-Z0-9_.)+)@((a-zA-Z0-9-)+).((a-zA-Z){2,4} PS
Esta expresión se divide en tres grupos y aborda muchos casos, incluidos: cuando el nombre de usuario es alfanumérico y cuando tiene un punto, por ejemplo, "first.last@". Esta expresión se utilizará para los principales dominios que contengan de 2 a 4 caracteres.
B. Filtrado de fechas
Las fechas pueden ser un factor crucial al manejar el filtrado de datos. Los datos textuales con los que está tratando a menudo contienen fechas. La expresión regular o RegEx que extrae los datos de un texto normal es - ^(d{1,2})(/-)(d{1,2})(/-)(d{2,4})$
La fecha y el mes pueden tener hasta 2 dígitos, mientras que el mes puede tener hasta 4 dígitos.
¿Cuáles son las funciones involucradas en la implementación de expresiones regulares en Python?
Las siguientes funciones están involucradas en la implementación de expresiones regulares en Python:
1. re.findall(): esta función acepta un patrón que debe coincidir con la cadena de texto. Devuelve las cadenas que coinciden.
2. re.sub() - Sub en "re.sub" significa "sustitución". Este método realiza exactamente la misma función que la función “re.findall()”.
3. re.split() - Separa las cadenas alrededor del separador que se le va a pasar como su parámetro. El separador puede ser cualquier cosa.
4. re.search(): esta función devuelve la coincidencia encontrada en la cadena junto con otros grupos de cadenas que ha capturado.
¿Cuáles son algunas secuencias especiales que se usan en las expresiones regulares?
Las siguientes son algunas de las secuencias especiales que se utilizan en las expresiones regulares:
1. A: Compruebe si la cadena comienza con el carácter dado.
2. (barra diagonal) b: Comprueba si la cadena comienza o termina con el carácter dado. (cadena)/b busca el principio mientras que (barra invertida) b (cadena) busca el final.
3. B: Es exactamente lo opuesto a la b. Comprueba si la cadena no comienza con el carácter dado.
4. d: Comprueba los valores numéricos en la cadena.
5. D: Comprueba cualquier valor o carácter no numérico.
6. s: busca cualquier carácter de espacio en blanco.
7. S: busca cualquier carácter que no sea un espacio en blanco.
8. w: comprueba cualquier carácter alfanumérico.
9. W: Comprueba cualquier carácter no alfanumérico.