¿Qué es la Expresión Regular en Python? Una Expresión Regular (RE) en un lenguaje de programación es una cadena de texto especial utilizada para describir un patrón de búsqueda. Es extremadamente útil para extraer información de texto, como código, archivos, registros, hojas de cálculo o incluso documentos. Mientras se usa la expresión regular en Python, lo primero que hay que reconocer es que todo es fundamentalmente un carácter, y estamos escribiendo patrones para que coincidan con una secuencia específica de caracteres, también conocida como cadena. Las letras ASCII o latinas son aquellas que aparecen en sus teclados y Unicode se usa para coincidir con el texto extranjero. Incluye dígitos y puntuación y todos los caracteres especiales como $#@!%, etc. Por ejemplo, una expresión regular de Python podría indicar a un programa que busque un texto específico en la cadena y luego imprima el resultado en consecuencia. La expresión puede incluir coincidencia de texto, repetición, ramificación, composición de patrones, etc. La expresión regular o RegEx en Python se denota como RE (REs, regexes o patrón de regex) y se importa a través del módulo re. Python admite las expresiones regulares a través de bibliotecas. RegEx en Python admite varias cosas como modificadores, identificadores y caracteres de espacio en blanco. Identificadores Modificadores Caracteres de espacio en blanco Se requiere escape\d= cualquier número (un dígito) \d representa un dígito. Ejemplo: \d{1,5} declarará un dígito entre 1,5 como 424,444,545, etc. \n=nueva línea . + * ? [] $ ^ () {} | \ \D= cualquier cosa excepto un número (un no dígito) += coincide con 1 o más \s= espacio \s= espacio (tabulador, espacio, nueva línea, etc.) ? = coincide con 0 o 1 \t=tabulación \S= cualquier cosa excepto un espacio * = 0 o más \e=escape \w= letras (coincidencia con un carácter alfanumérico, incluyendo «_») $ coincide con el final de una cadena \r=retorno de carro \W= cualquier cosa excepto letras (coincidencias con un carácter no alfanumérico que excluye «_») ^ coincide con el principio de una cadena \f=avance de página .= cualquier cosa excepto letras (puntos) | coincide con x/y —————- \b=cualquier caracter excepto una nueva línea []=rango o «varianza» —————- \.{x}=esta cantidad de código precedente —————- Expresión Regular (RE) Sintaxis importar re «re» módulo incluido con Python es principalmente utilizado para la búsqueda y manipulación de cadenas También se utiliza con frecuencia para el «rastreo» de páginas web (extraer grandes cantidades de datos de sitios web) Comenzaremos el tutorial de expresiones con este ejercicio simple utilizando las expresiones (w+) y (^). Ejemplo de la expresión w+ y ^ «^»: Esta expresión coincide con el inicio de una cadena «w+»: Esta expresión coincide con el carácter alfanumérico en la cadena Aquí veremos un ejemplo de Python RegEx de cómo podemos usar la expresión w+ y ^ en nuestro código. Cubriremos la función re.findall() en Python, más adelante en este tutorial, pero por ahora nos enfocaremos simplemente en las expresiones \w+ y \^ Por ejemplo, para nuestra cadena «guru99, la educación es divertida», si ejecutamos el código con w+ y^, dará como resultado «guru99». importar re xx = «guru99, la educación es divertida» r1 = re.findall(r»^\w+», xx) imprimir r1 Recuerde que si eliminamos el signo + de w+, el resultado cambiará y solo dará el primer carácter de la primera letra, es decir, [g] Ejemplo de la expresión \s en la función re.split «s»: Esta expresión se utiliza para crear un espacio en la cadena Para entender cómo funciona esta RegEx en Python, comenzaremos con un simple ejemplo de RegEx de Python de una función de división. En el ejemplo, hemos dividido cada palabra usando la función «re.split» y al mismo tiempo hemos utilizado la expresión \s que permite analizar cada palabra en la cadena por separado. Cuando ejecutes este código te dará la salida [«we», «are», «splitting», «the», «words»]. Ahora, veamos qué sucede si quitas «\» de s. No hay ninguna letra «s» en la salida, esto es porque hemos eliminado «\» de la cadena, y evalúa «s» como un carácter regular y divide las palabras dondequiera que encuentre «s» en la cadena. Del mismo modo, hay una serie de otras expresiones regulares de Python que puedes usar de varias maneras en Python como \d,\D,$,\.,\b, etc. Aquí está el código completo importar re xx = «guru99, la educación es divertida» r1 = re.findall(r»^\w+», xx) imprimir(re.split(r’\s’,»estamos dividiendo las palabras»)) imprimir(re.split(r’s’,»dividir las palabras»)) A continuación, veremos los tipos de métodos que se utilizan con expresiones regulares en Python. Uso de métodos de expresión regular El paquete «re» proporciona varios métodos para realizar consultas en una cadena de entrada. Veremos los métodos de re en Python: re.match() re.search() re.findall() Nota: Basado en las expresiones regulares, Python ofrece dos operaciones primitivas diferentes. El método match comprueba si hay una coincidencia solo al comienzo de la cadena mientras que search comprueba si hay una coincidencia en cualquier parte de la cadena. re.match() La función re.match() de re en Python buscará el patrón de expresión regular y devolverá la primera ocurrencia. El método de coincidencia de Python RegEx buscará una coincidencia solo al comienzo de la cadena. Por lo tanto, si se encuentra una coincidencia en la primera línea, devolverá el objeto de coincidencia. Pero si se encuentra una coincidencia en alguna otra línea, la función de coincidencia de Python RegEx devuelve nulo. Por ejemplo, considere el siguiente código de la función re.match() de Python. La expresión «w+» y «\W» coincidirá con las palabras que comiencen con la letra ‘g’ y después, cualquier cosa que no comience con ‘g’ no será identificada. Para comprobar la coincidencia de cada elemento en la lista o cadena, ejecutamos el bucle en este ejemplo de re.match() de Python. re.search(): Encontrar patrón en el texto La función re.search() buscará el patrón de expresión regular y devolverá la primera ocurrencia. A diferencia de Python re.match(), comprobará todas las líneas de la cadena de entrada. La función re.search() de Python devolverá un objeto de coincidencia cuando se encuentre el patrón y «nulo» si no se encuentra el patrón ¿Cómo usar search()? Para usar la función search(), primero debes importar el módulo re de Python y luego ejecutar el código. La función re.search() de Python toma el «patrón» y el «texto» para escanear de nuestra cadena principal Por ejemplo, aquí buscamos dos cadenas literales «Pruebas de software» «guru99» en una cadena de texto «Las pruebas de software son divertidas». Para «pruebas de software», encontramos la coincidencia, por lo que devuelve la salida del ejemplo de re.search() de Python como «se encontró una coincidencia», mientras que para la palabra «guru99» no pudimos encontrarla en la cadena, por lo que devuelve la salida como «No se encontró coincidencia». re.findall() El módulo findall() se utiliza para buscar «todas» las ocurrencias que coincidan con un patrón dado. En contraste, el módulo search() solo devolverá la primera ocurrencia que coincida con el patrón especificado. findall() iterará sobre todas las líneas del archivo y devolverá todas las coincidencias no sobrepuestas del patrón en un solo paso. ¿Cómo usar re.findall() en Python? Aquí tenemos una lista de direcciones de correo electrónico, y queremos extraer todas las direcciones de correo electrónico de la lista, usamos el método re.findall() en Python. Encontrará todas las direcciones de correo electrónico de la lista. Aquí está el código completo para el ejemplo de re.findall() importar re lista = [«guru99 consigue», «guru99 da», «gurú Selenium»] para elemento en lista: z = re.match(«(g\w+)\W(g\w+)», elemento) si z: imprimir(z.grupos()) patrones = [‘pruebas de software’, ‘guru99’] texto=»¿Las pruebas de software son divertidas?» para patrón en patrones: print(‘Buscando «%s» en «%s» ->’ % (patrón, texto), end=’ ‘) si re.search(patrón, texto): print(‘¡se encontró una coincidencia!’) else: print(‘no se encontró coincidencia’) abc=»guru99@google.com, careerguru99@hotmail.com, usuarios@yahoomail.com» correos_electrónicos = re.findall(r'[\w\.-]+@[\w\.-]+’, abc) para correo_electrónico in correos_electrónicos: imprimir(correo_electrónico) Python Flags Muchos métodos y funciones de Regex de Python toman un argumento opcional llamado Flags. Estas banderas pueden modificar el significado del patrón de Python Regex dado. Para entender esto, veremos uno o dos ejemplos de estas banderas. Varias banderas utilizadas en Python incluyen Sintaxis para las banderas de Regex de Python ¿Qué hace esta bandera [re.M]? Hace que begin/end considere cada línea [re.I] Ignora mayúsculas y minúsculas [re.S] Hace que [ . ][re.U] Hace que { \w,\W,\b,\B} siga las reglas de Unicode [re.L] Hace que {\w,\W,\b,\B} siga las reglas de configuración regional [re.X] Permite comentarios en Regex Ejemplo de la bandera re.M o Multiline En multiline, el carácter de patrón [^] coincide con el primer carácter de la cadena y el comienzo de cada línea (inmediatamente después de cada salto de línea). Mientras que la expresión pequeña «w» se usa para marcar el espacio con caracteres. Cuando ejecutas el código, la primera variable «k1» solo imprime el carácter ‘g’ para la palabra guru99, mientras que cuando agregas la bandera multiline, obtiene el primer carácter de todos los elementos de la cadena. Aquí está el código importar…
Calle Eloy Gonzalo, 27
Madrid, Madrid.
Código Postal 28010
Paseo de la Reforma 26
Colonia Juárez, Cuauhtémoc
Ciudad de México 06600
Real Cariari
Autopista General Cañas,
San José, SJ 40104
Av. Jorge Basadre 349
San Isidro
Lima, LIM 15073