top of page
Foto del escritorJaime Franco Jimenez

Expresiones regulares

Estas expresiones están disponibles a través del módulo re, es un pequeño lenguaje de programación, donde podemos buscar cadenas, direcciones, correos electrónicos, o, cualquier otra cosa.


El lenguaje de expresiones regulares es pequeño y restringido, por lo que no todas las tareas de procesamiento de cadenas se pueden realizar utilizando expresiones regulares


Las expresiones regulares se utilizan para operar en cadenas de caracteres.


La mayoría de las operaciones de expresiones regulares están disponibles como funciones y métodos a nivel de módulo.


Veamos algunos ejemplos, lo primero es importar RE.

Creamos una variable con el siguiente texto o cadena.


Ponemos print, abrimos paréntesis, ponemos re.search, que escanea o busca una cadena en cualquier ubicación dentro de la cadena, abrimos paréntesis, el primer argumento es el texto a buscar, ponemos entre comillas dobles prueba, el siguiente argumento es donde buscar, ponemos la variable valor, cerramos paréntesis.

Ejecutamos y vemos que nos devuelve un objeto, donde nos indica donde empieza la primera palabra y última palabra, además nos muestra que hay coincidencia, es decir, que el texto ha sido encontrado.

Si no hubiera coincidencia, devolvería None.


Los caracteres comienzan a contar desde cero, y, los espacios en blanco cuentan.


Para saber la posición que ocupa el primer carácter de la cadena buscada, usamos start.

Para saber la posición del último carácter del texto buscado, usamos end.

Con el método span, obtenemos la posición inicial y final del texto buscado en una tupla.

Si la expresión a buscar aparece mas de una vez, nos devuelve la coincidencia de la primera aparición, para encontrar todas las cadenas, o, subcadenas, usamos el método findall, los argumentos son los mismos que para search.

Para saber el numero de veces que aparece la cadena, podemos usar len, como sigue:

Match, encuentra coincidencia si la cadena a buscar se encuentra al comienzo de la cadena, para encontrar la palabra prueba, debe de estar al principio de la cadena.


Por ejemplo, en la siguiente línea, vamos a buscar la letra “b”, dentro de la siguiente cadena:

Nos devuelve none, porque la letra “b” dentro de la cadena no es la primera letra.


Cambiamos match por search.

Nos devuelve un objeto con la coincidencia.

El estilo más común es almacenar el objeto match en una variable, y luego verificar si era None.


Ahora, vamos a buscar la letra “b” en la siguiente cadena, donde las letras están en mayúsculas.

Nos devuelve none, porque no hay coincidencia, pero, si queremos que no tenga en cuenta mayúsculas, y, minúsculas, usamos re.IGNORECASE, este modificador no acepta argumentos.

El método fullmatch, encuentra la cadena completa, por ejemplo, tenemos las siguientes dos líneas, donde buscamos Py dentro de Python, la primera búsqueda la hacemos con search, y, la segunda la hacemos con fullmatch.

Ejecutamos, search ha encontrado “py” dentro de Python, pero, fullmatch no ha encontrado coincidencia.


En vez de py, voy a poner python.

Las dos expresiones encuentran coincidencia.


Ahora, tenemos una lista con los siguientes nombres:

Queremos extraer los nombres que comiencen por “J”, para ello, debemos de recorrer cada nombre de valor, y, si empieza por “J”, extraemos el nombre, para ello, usamos un for, declaramos una variable, ponemos in y la variable valor.

En la siguiente línea, preguntamos si encuentra la letra “J” en la variable x”, en ese caso, que impirma dicha variable.

Ejecutamos, y, nos devuelve Jaime y Jose.

 

Metacaracteres - caracteres especiales

Vamos a cambiar search por findall.


Tenemos el carácter espacial $, que coincide con el final de la cadena, he modificado la lista, y, vamos a buscar el apellido “eee”, para ello, como valor a buscar ponemos eee seguido del símbolo de dólar.

Es decir, va a buscar todas las cadenas que terminen en “eee”.


Nos devuelve Jose eee.


Si usamos el Circunflejo, coincide con el comienzo de la cadena, por ejemplo:

Nos devuelve Jose eee.


Tenemos los corchetes, que se utiliza para indicar a buscar un conjunto de caracteres.


He modificado la lista y he puesto una dirección de correo.

Voy a extraer las direcciones de correos, para ello, en el argumento del valor buscado, ponemos corchetes, dentro de los corchetes, ponemos la arroba (@).

Ejecutamos, y, nos devuelve la dirección de correo electrónico.


En la lista he añadido pelucas y pelucos.

Quiero extraer pelucas y pelucos, ambas palabras se escriben igual, la diferencia es la ultima vocal, usamos la siguiente línea, donde entre corchetes, ponemos las letras a buscar.

Ejecutamos, y, nos devuelve pelucas y pelucos.


Para especificar un rango, debemos de usar como delimitador, o, separador el guion medio, por ejemplo, [0-5], buscara en cada cadena los números desde el 1 al 5, vamos a buscar los nombres que contengan las vocales o, y, u.

Nos devuelve:

Hay que decir que distingue entra mayúsculas, y, minúsculas.


Con la siguiente expresión, devuelve los nombres que comiencen por “P”.

He modificado los datos de la lista, con la siguiente línea, nos va a devolver los nombres que acaben entre los números 3 y 5.

Ahora, usamos el carácter especial asterisco, el cual sustituye todos los caracteres, por ejemplo, en la siguiente línea, busca todos los nombres que comiencen por “P” y el asterisco sustituye todos los caracteres que haya a partir del asterisco.

Con la siguiente expresión, le indicamos que nos devuelva los elementos que terminen diferente entre 1 y 3.

Si quitamos el símbolo circunflejo, nos devolverá los elementos que terminan entre 1 y 3.

He añadido tres elementos más, pero terminado en A, B, y, C, los cuales también quiero extraer, para ello, dentro de los corchetes, después del último número ponemos A-Z, es decir, que termines entre la letra “A” y la letra “Z”.

Tenemos el comodín punto, que sustituye un solo carácter.


He modificado la variable valor, y, algunos elementos, he puesto como primera letra, la vocal “a”.

Quiero que me devuelva todos los elementos, para ello, ponemos:

Si ponemos “.*”. obtenemos los mismos resultados.

Ahora, tenemos la siguiente cadena:

Queremos extraer solo los valores numéricos, para ello, usamos \d, como sigue:

Si queremos extraer las cadenas que no sean números decimales, usamos \D.

Al usar \w, Coincide con cualquier carácter alfanumérico; esto es equivalente a la clase [a-zA-Z0-9_].


He modificado la variable valor como sigue:

Vamos a extraer las cadenas que terminen en consonante, para ello, usamos la siguiente línea:


Miguel Angel Franco

2 visualizaciones0 comentarios

Comentarios


bottom of page