miércoles, 4 de enero de 2023

Expresiones regulares I

Posted by q3it on miércoles, enero 04, 2023 in


Las expresiones regulares nos van a ayudar a filtrar contenido de una forma más compleja de lo que estábamos haciendo con grep. Leí esta frase en algún libro técnico "Las expresiones regulares son para los textos lo mismo que las matemáticas para los números".
 
La primera expresión regular que vamos a ver es la que hace referencia al inicio de línea y es el acento circunflejo.
 
Nosotros podemos buscar líneas que empiecen por un caracter, por una frase o por una palabra. Por ejemplo, circunflejo y la letra que nosotros queremos buscar, estas expresiones regulares tenemos que tener claro que se puede utilizar en un montón de comandos, en un montón de lenguajes de programación e incluso con el comando que hemos visto anteriormente grep. 
 
En el fichero llamado nombres.txt vemos que tenemos ocho nombres y que queremos filtrar los que empieza por L mayúscula.


Si buscáramos con grep veríamos que mostraría tres nombres, porque uno empieza por L y los otros porque contiene la l. 
 
 
Si nosotros quisiéramos filtrar los que empieza por este carácter, entonces incluíamos el acento circunflejo ^ y ahora sólo nos mostraría los nombres que empiezan por L.
 
 
Si en cambio nosotros queremos filtrar por el final de línea, entonces utilizaremos el dólar $. Por ejemplo, si nosotros filtramos por la letra m nos aparecerán cuatro nombres que contienen la m.
 
 
Pero si queremos filtrará simplemente los que acaban por m pondremos el dólar al final de nuestra expresión y nos aparecerá que los dos nombres que terminan en este caracter.
 
 
La siguiente expresión regular que vamos a hablar es el punto . y lo que indica es un carácter. Si nosotros queremos buscar una cadena que sea de tres caracteres, entonces podemos iniciar línea ^...$ y finalizar la línea con otro caracter, entonces nos filtraran las líneas que tiene tres caracteres.
 
 
Como podemos ver en la figura anterior, los tres puntos representan el número de caracteres a filtrar, pero también tenemos que especificar el inicio y el fin. En este caso sólo nos mostrará los nombres que contengan tres caracteres.
 
Y la última expresión regular es la agrupación [], que ya lo habíamos visto en caracteres especiales, aquí lo que podemos hacer es abrir una llave, poner por ejemplo, una AM empezando con el acento circunflejo y lo que buscará son frases que empiecen por la letra o por la letra A o M.
 
 
Como vemos solo nos mostrará los nombres dónde se empieza por letra A y M, esto también nos va a servir para buscar rangos de caracteres, nosotros podemos poner ^[A-M] y entonces buscará todo lo que contenga este rango que empiece por A y que termine en M mayúsculas, si le quitamos la opción -i también buscará las minúsculas.
 
 
En el caso de que queramos negarlo, ponemos dentro de una agrupación un circunflejo, para este ejemplo queremos el rango que este fuera del parámetro de los nombres que empiecen por A y que terminen en M.