Expresiones regulares en Python: una guía para principiantes

Contenidos

Este post fue difundido como parte del Blogatón de ciencia de datos

Las expresiones regulares, además reconocidas como «regex» o «regexp», se usan para hacer coincidir cadenas de texto, como caracteres, palabras o patrones de caracteres en particular. Significa que podemos hacer coincidir y extraer cualquier patrón de cadena del texto con la ayuda de expresiones regulares. He usado dos términos, fósforo y extraer y ambos términos disponen un significado ligeramente distinto. Puede haber casos en los que queramos hacer coincidir un patrón específico pero extraer un subconjunto del mismo. A modo de ejemplo, queremos extraer los nombres de los becarios de doctorado de una lista de nombres de personas en una organización.

Para este caso, lo haremos fósforo la keyword «Dr XYZ» y extraer solo el nombre, dicho de otra forma, «XYZ», no el prefijo «Dr.» de la lista. Regex es muy útil para buscar en textos, correos electrónicos y documentos de gran tamaño. Regex además se llama «lenguaje de programación para la coincidencia de cadenas». Antes de sumergirse en las expresiones regulares y su implementación en Python, es esencial conocer sus aplicaciones en el mundo real.

Aplicaciones

Validación de formulario

El uso más común de las expresiones regulares es la validación de formularios, dicho de otra forma, validación de email, validación de contraseña, validación de número de teléfono y muchos otros campos del formulario.

Detalles de cuenta bancaria

Debes haber notado que cada banco tiene un código IFSC para sus diferentes sucursales que comienza con el nombre del banco. El número de la tarjeta de crédito consta de 16 dígitos y los primeros dígitos representan si la tarjeta es Master, Visa o Rupay. En todos estos casos, se utiliza regex.

Procesamiento de datos

¿Cómo podemos olvidar la relevancia de las expresiones regulares en la minería de datos? Cuando los datos están presentes en forma no estructurada, dicho de otra forma, en forma de texto, es necesario convertirlos a números para entrenar el modelo. Por eso, la expresión regular juega un papel importante en el análisis de los datos, hallar patrones en los datos y, por último, realizar operaciones en el conjunto de datos.

PNL

La PNL es un procedimiento a través de el cual una computadora comprende y genera el lenguaje humano. En NLP, las expresiones regulares se usan para borrar las palabras innecesarias, dicho de otra forma, detener las palabras del texto, lo que ayuda a limpiar los datos. Regex además se utiliza para analizar los textos y, por eso, ayuda en el pronóstico del algoritmo para procesar los datos.

Plataformas de redes sociales

Las plataformas de redes sociales como Google, Facebook, Twitter proporcionan varias técnicas de búsqueda, que son diferentes y eficientes de una búsqueda normal. Créame, si conoce estas técnicas, puede explorar mucho más. Todos estos técnicos usan expresiones regulares en el backend para procesar estas búsquedas.

Puede pensar en otras aplicaciones de expresiones regulares siempre que se requiera la coincidencia de patrones.

Patrones de comodines

Las unidades individuales más pequeñas por medio de las expresiones regulares que se forman se denominan patrones comodín. La lista de patrones de uso común son

^

Este comodín coincide con los caracteres al principio de una línea.

PS

Este comodín coincide con los caracteres al final de la línea.

.

Este comodín coincide con cualquier carácter de la línea.

s

Este comodín se utiliza para hacer coincidir el espacio en una cadena.

S

Este comodín coincide con caracteres que no son espacios en blanco.

D

Este comodín coincide con un dígito.

*

Este comodín repite cualquier carácter anterior cero o más veces. Coincide con la cadena más larga factible.

*?

Este comodín además repite cualquier carácter o caracteres anteriores cero o más veces. A pesar de esto, coincide con la cuerda más corta siguiendo el patrón.

+

Este comodín repite cualquier carácter anterior una o más veces. Coincide con la cadena más larga factible siguiendo el patrón.

+?

Este comodín repite cualquier carácter anterior una o más veces. A pesar de esto, coincide con la cadena más corta factible siguiendo el patrón.

[aeiou]

Coincide con cualquier carácter de un conjunto de caracteres determinados.

[^XYZ]

Coincide con cualquier carácter no incluido en el conjunto.

[a-z0-9]

Coincide con cualquier carácter dado en az o 0-9.

(

Este comodín representa el comienzo de la extracción de la cadena.

)

Este comodín representa el final de la extracción de la cadena.

Ejemplos de

Si desea extraer números de un documento, la expresión regular será: [0-9]+

Si desea extraer todos los caracteres que no sean números, la expresión regular será: [^0-9]+

Para extraer un patrón tal que un nombre comience con «A» y termine con «h», la expresión regular será: ^ A[a-zA-Z]+ h $

Una expresión regular más compleja si desea extraer la dirección de email es: ^[a-zA-Z][a-zA-Z0-9._+-][email protected][A-Za-z]+.[A-Za-z]

¡Construyendo Regex!

Regex puede ser muy complejo. Comprender y construir expresiones regulares complejas es un arte que se aprende con la práctica. Puedes referir aquí para aprender a construir expresiones regulares complejas.

Implementación en Python

Regex es proporcionado por muchos lenguajes de programación, como python, java, javascript, etc. Aún cuando el concepto es el mismo en todas partes aún, puede hallar algunas diferencias en diferentes lenguajes.

Ahora veremos las diversas funciones proporcionadas por python para poner en práctica expresiones regulares junto con su código.

Python no proporciona un módulo de expresiones regulares incorporado. Debe instalarlo usando el comando pip y después importarlo a su Python IDE. Posteriormente almacenamos algo de texto en una variable llamada cadena.

pip install re
import re
string = "Virat Kohli is one of the greatest players in the Indian cricket team.nHe was born on November 5, 1988, in Delhi.nHe has completed his education at Vishal Bharti School.nIn 2008, he won the World Cup for India on Omar’s children under 19 years. From 2011, he started Test cricket matches. nHe is currently the captain of all three formats of India.n In 2017, Virat Kohli got married to Hindi film actress Anushka Sharma.nVirat has won the Man of the Tour twice, in 2014 and 2016. nSince 2008, he has represented Delhi in-home teams. nHe has been awarded the Arjuna Award in recognition of the achievements of international cricket."

método de coincidencia

Esta función busca el patrón RE al principio de la cadena y devuelve el objeto de coincidencia de la cadena. Se puede entrar al valor en el objeto por medio de la función group (). La sintaxis de la función de coincidencia es

re.match (patrón, cadena, banderas)

los patrón representa la expresión regular, la cuerda representa el texto que se buscará para que coincida con el patrón, y las banderas representan los modificadores. Si queremos aplicar alguna condición en el emparejamiento usamos banderas. Este es un parámetro opcional.

código python

pattern=r'(^[V].+?)s'
print(re.match(pattern,string))      # Returns the match object
print(re.match(pattern,string).group()) #Extracting value from the object

PRODUCCIÓN

Virat

Esta función coincide con si la primera cadena comienza con V.

método de búsqueda

esta función busca la primera aparición del patrón RE en la cadena dada. Esta función además devuelve el objeto de coincidencia si se encuentra el patrón; caso contrario, no devuelve ninguno. La sintaxis es

re.search (patrón, cadena)

Tenga en cuenta que fósforo busca una coincidencia solo al principio de la cadena, mientras que buscar busca una primera coincidencia en cualquier lugar de la cadena.

código python

pattern=r'[0-9]+'
re.search(pattern,string)      # Returns the match object
print(re.search(pattern,string).group())

PRODUCCIÓN

Esta función devuelve el primer número presente en el texto.

método findall

Esta función devolverá todas las apariciones del patrón RE en la cadena. La sintaxis de findall es

re.findall (patrón, cuerda)

código python

pattern=r'[0-9]+'
print(re.findall(pattern,string))

PRODUCCIÓN

['5', '1988', '2008', '19', '2011', '2017', '2014', '2016', '2008']

Esta función extrae todos los números del texto.

sub método

Esta función se utiliza para reemplazar todas las apariciones del patrón RE con la nueva cadena / patrón. La sintaxis es:

re.sub (patrón, respuesta, cadena)

código python

repl = r’Chiku ‘

imprimir (re.sub (patrón, respuesta, cadena))

PRODUCCIÓN

"Chiku Kohli is one of the greatest players in the Indian cricket team.nHe was born on November 5, 1988, in Delhi.nHe has completed his education at Vishal Bharti School.nIn 2008, he won the World Cup for India on Omar’s children under 19 years. From 2011, he started Test cricket matches. nHe is currently the captain of all three formats of India.n In 2017, Virat Kohli got married to Hindi film actress Anushka Sharma.nChiku has won the Man of the Tour twice, in 2014 and 2016. nSince 2008, he has represented Delhi in-home teams. nHe has been awarded the Arjuna Award in recognition of the achievements of international cricket."

Esta función reemplaza a Virat con Chiku, dicho de otra forma, el apodo de Kohli.

Estas son las funciones más utilizadas del módulo «re». Puedes referir re documentación para más detalles.

Resumen

Empezamos con una definición básica de expresiones regulares y después discutimos sus diversas aplicaciones. Posteriormente aprendimos a formar expresiones regulares usando comodines. Por último, implementamos varias herramientas de expresiones regulares en Python.

Referencias

Foto principal – https://www.codingforentrepreneurs.com/blog/python-regular-expressions/

Sobre mí

¡Hola! Soy Ashish Choudhary. Estoy estudiando B.Tech de la Universidad de Ciencia y Tecnología JC Bose. La ciencia de datos es mi pasión y me enorgullece escribir blogs interesantes relacionados con ella. No dude en contactarme en LinkedIn.

Los medios que se muestran en este post no son propiedad de DataPeaker y se usan a discreción del autor.

Suscribite a nuestro Newsletter

No te enviaremos correo SPAM. Lo odiamos tanto como tú.