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

12/Jun/2018 regex

En el articulo anterior explique que son las expresiones regulares y una introducción, si eres nuevo usando RegEx, quizá 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 especifica 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

Cuantificadores

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í esta 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 linea
  • \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 ultimo 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 ahi 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 el . 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 ultimo 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 ultimo 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 mas 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.



Ir a la barra de herramientas