Comienza hoy con expresiones regulares

Como desarrollador, trabajar con cadenas de texto en un inicio puede ser algo frustrante, pero te aseguro que todo eso cambiará una vez que comiences a utilizar expresiones regulares. Para comenzar, las expresiones regulares no hacen mas que describir un cierto patrón o combinación de caracteres a buscar dentro de una cadena de texto, con ellas podremos comprobar desde la existencia de un carácter o hasta la de un patrón más complejo.

La primer aparición de expresiones regulares en el campo de la computación la podemos encontrar nada más y nada menos que dentro de un editor de líneas llamado Ed, creado por el ingeniero Ken Thompson, quién entonces se encontraba trabajando en los laboratorios de Bell Labs allá por 1969. Aquel editor de líneas apareció por primera vez como una utilidad para el sistema operativo de UNIX y era el encargado de suplir las labores para editar archivos. Similar a como se hace en la actualidad, la instrucción que había que escribir para que Ed realizara una búsqueda de texto era algo parecido a lo siguiente.

Se incluían al principio y al final las letras “g” de global y “p” de print, ambas letras son conocidas como modificadores. Lo que tenemos en la parte de en medio vendrían siendo en sí los símbolos que conformaban la expresión regular. De esta forma esta instrucción daba como significado la frase “global regular expression print” cuya abreviatura consiste en la palabra grep. A partir del éxito de esta característica contenida en Ed, se desarrolló el famoso comando de grep el cual ayuda a realizar búsquedas a nivel sistema de archivos, hoy en día este comando lo encontramos en cualquier sistema operativo basado en UNIX.

Ahora muchos de los lenguajes de programación modernos tienen incorporado lo necesario para soportar el uso de expresiones regulares, y a pesar de que la sintaxis pueda cambiar para cada lenguaje, en esencia podremos hacer soluciones similares para cada uno. La siguiente es una guía básica para comenzar a utilizar expresiones regulares en javascript.

Estructura

La estructura básica de una expresión regular dentro de javascript es la siguiente:

Por ahora dejaremos los modificadores de lado y nos concentraremos en la parte donde especificamos la expresión regular. Lo mas simple que podemos hacer en este caso y a manera de ejemplo, es escribir literalmente el o los caracteres a buscar dentro del texto, obtendremos como resultado si efectivamente el texto de prueba contiene el orden preciso de aquellos caracteres.

Representando más de un carácter a la vez.

En el ejemplo anterior se buscaba estrictamente una coincidencia con un cierto carácter o palabra, hay que tener en cuenta que existen ocasiones en las cuales no necesitaremos ser tan específicos.
Para ello tenemos algo llamado clases de caracteres o “metacarateres”, los cuales son una alternativa para poder representar grupos enteros de caracteres que se encuentran relacionados entre sí de manera semántica. Para representar una de estas clases usamos el símbolo de diagonal invertido o backslash seguido de la abreviatura de la clase. Esto nos dará por resultado cualquier coincidencia con los caracteres propios de la clase.

Además de todos estos tenemos un metacaracter que consta únicamente de un ‘.’ el cual hace coincidir con cualquier carácter que se nos ocurra, con excepción del salto de línea.

Cuantificadores

Con ellos se especifica el número de apariciones que debe tener un patrón dentro de la expresión regular.

Modificadores

Anteriormente mencionamos algo conocido como modificadores, lo cual no esta de más mencionar que son opcionales. Los modificadores nos permiten redefinir los términos de búsqueda de la expresión. Tenemos que hasta ahora todas las búsquedas hechas eran sensibles a mayusculas y además estas terminaban una vez que se encontraba la primera coincidencia. Para poder alterar ese comportamiento, en javascript tenemos disponibles los siguientes modificadores

No está de más mencionar que cualquiera es opcional y que son también “acumulables” entre sí, de manera que podemos usar mas de uno para elaborar búsquedas.

Capturing Groups

Cuando nuestro texto de prueba sea más complejo y contenga varias partes las cuales nos interese separar, haremos uso de un “grupo de captura”. Para crear un nuevo grupo de captura basta con agregar paréntesis a la porción del patrón cuyo resultado queramos apartar del resto.
Como ejemplo algo burdo tenemos el siguiente fragmento de html, en el cual tenemos distintos tags, algunos con atributos y otros no.
<html>
<h1>Titulo<h1>
<span width="100">Contenido 1</span>
<span layout="row" position="absolute">Contenido 2</span>

<h4>Subtitulo</h4>
<span>Contenido 3</span>
</html>
Con la siguiente expresión regular lo que se pretende es poder identificar por separado el contenido y los atributos de los tags con nombre “span”.
/<spans?(.+)?>((?:w+s?)+)</span>/g
Un detalle que queda por aclarar en la expresión regular de arriba es el uso de ‘?:’ dentro del paréntesis, al usar estos dos símbolos dentro de un grupo de captura estamos diciendo que queremos que ese grupo sea ignorado y no intente arrojar un resultado.

Podemos entonces observar como la coincidencia se logra con todo el tag y como los resultados se guardan en distintos grupos:

Mencione burdo al inicio del ejemplo ya que en javascript hay otras maneras más sencillas para poder seleccionar elementos dentro de un html, además de que no es común que se usen expresiones regulares para “parsear” un archivo de tipo html. Este último ejemplo está hecho con el propósito de poner en práctica todos los conceptos que se repasaron hace un momento.
Las expresiones regulares cuentan con muchas otras reglas más, que aquí no se cubrieron y que vale la pena echar un vistazo. Espero que esta pequeña guía te haya sido útil y que de ahora en adelante comiences a considerarlas en cualquiera que sea el lenguaje de programación que utilices.
Referencias

Regular Expressions Quick Start

Many applications and programming languages have their own implementation of regular expressions, often with slight and…

Referencias

www.regular-expressions.info

TechWo

Comunidad formada por mujeres y hombres generadores de…

Thanks to Marcela Bonell and Erendira Garcia. 

Deja un comentario

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

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Más info

aceptar