Como trabajar con expresiones regulares: Guía práctica.



En el artículo anterior explique que son las expresiones regulares y una introducción, si eres nuevo usando RegEx, entonces vale la pena leerlo. Ahora voy a mostrarte una guía para entender y utilizar las expresiones regulares.

Caracteres, grupos de caracteres y rangos.

Las expresiones regulares pueden contener palabras, grupos o rangos, por ejemplo una regex pueden usarse para buscar una palabra específica por ejemplo codigonaranja, pero también podemos definir que contenga un rango de caracteres o grupo usando los signos [ y ], por ejemplo la expresión regular [aeiou] puede usarse para saber si el texto contiene una vocal.

Regex: grupo de caracteres

Como vemos la expresión regular encontró las dos vocales en la palabra Luis, y detecto que la palabra contiene vocales. También hay que notar que cada letra [aeiou] se considera de forma independiente y no como una palabra.

Si lo que necesitamos es buscar un rango debemos separar el rango por un - por ejemplo para buscar palabras que contengan una letra mayúscula, podemos usar esta expresión regular [A-Z]

Regex: rango de caracteres

También podemos “negar” el rango buscando el resultado opuesto con el caracter ^ al inicio del rango, por ejemplo la expresión [^0-9] intenta buscar caracteres que no sean números. Al aplicar la expresión a un texto con números, entonces no encuentra ninguna coincidencia.

Uso del simbolo de negacion en regex o expresiones regulares

Cuantificadores de expresiones regulares

Estos se colocan después de un rango, texto o meta-caracter para modificar o definir la cantidad de veces que debe repetirse o encontrarse. Aquí está la lista de ellos:

  • ? Coincide 0 ó 1 vez.
  • * Coincide 0 ó más veces
  • + Coincide 1 ó más veces
  • {n} Coincide exactamente n veces, donde n es un número entero.
  • {n,} Coincide al menos n veces, donde n es un número entero.
  • {,m} Coincide un máximo de m veces, donde m es un número entero.
  • {n,m} Coincide exactamente de n a m veces, donde n y m son números entero.

Meta-caracteres

En las expresiones regulares existen caracteres especiales con un significado y tratamiento especial, a estos se les llama meta-caracteres o caracteres especiales, aquí hay una lista de ellos.

  • . Representa cualquier caracter excepto el salto de línea
  • \w Representa cualquier letra o número
  • \W Representa cualquier caracter que no sea una letra o un numero.
  • \d Representa cualquier numero del 0 al 9
  • \D Representa cualquier caracter que no sea un numero del 0 al 9
  • \s Representa un espacio en blanco
  • \S Representa cualquier caracter que no sea un espacio en blanco.
  • $ Representa que ahí finaliza el texto, por ejemplo la expresión com$ busca que com sea lo último en el texto. Este caracter solo puede usarse al final de la expresión regular.
  • ^ Representa el inicio del texto, por ejemplo la expresión ^hola busca que el texto inicie con hola, este caracter solo puede usarse al inicio de la expresión regular.
  • \b Representa que ahí inicia o finaliza una palabra, por ejemplo la expresión \b[A-Z][a-z]* busca palabras que inicien con una letra mayúscula y luego lleven cualquier cantidad de letras minúsculas. En cambio la expresión \w*os\b busca palabras que finalicen en os.

Ejemplos prácticos.

Ahora que ya conoces mucho de expresiones regulares, vamos a practicar con algunos ejemplos. Primero vamos a detectar si un archivo es de tipo pdf, en base a su nombre y extensión, para ello podemos usar una expresión como esta: .*\.pdf$

Lo que hace la expresión es buscar cualquier caracter, sea numero, letra o símbolo usando el . luego se coloca un * para decir que puede ir cualquier cantidad de caracteres, después sabemos que la extensión de los archivos inicia con un . pero como él . es un caracter especial usamos un signo \ para que lo ignore y trate como un simple . luego debemos buscar el texto pdf y este debe ser lo último en el texto, no debe haber nada después, esto lo definimos usando el signo $

Expresion regular para buscar archivos de tipo pdf

Ahora si necesitamos validar un número telefónico y nos dicen que solo puede iniciar con un 2 o un 7 y debe de tener exactamente 8 números, podemos usar esta expresión regular:  ^[27]\d{7}$

Primero usamos el signo ^ para decir que estamos por definir el inicio de la cadena, luego le decimos que debe llevar un 2 o un 7 con [27] ahora faltan 7 números más para completar los 8 números, entonces usamos \d para decir que continua un número del 0 al 9 y usamos {7} para definir que este último patrón se repite 7 veces, luego usamos $ para definir que aquí debe terminar el texto (después de los últimos 7 números.)

Regex validar telefono

Intente mantener esta guía lo más corta y simple posible, aunque este tema podría llenar un libro completo. Lo importante es iniciar con algo sencillo, trata de crear tus propias expresiones regulares o prueba modificando las que están en este articulo, por ejemplo intenta modificar la validación de números telefónicos para que sigan la reglas de los números en tu país.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *