X

Developer Tools #2: Construyendo expresiones regulares con Regex101

Seguimos con la categoría del blog llamada Developer Tools. En esta segunda entrega os presento Regex101 , una herramienta que nos permite probar y testear nuestras expresiones regulares.

A menudo empleamos en nuestros desarrollos el uso de expresiones regulares. Su utilidad principal es describir el conjunto de cadenas que componen un string, especialmente útil en editores de texto e IDEs para búsqueda y manipulación de textos. Basado en mi experiencia personal puedo afirmar que todos los grandes programadores que he conocido aprovechan al máximo y conocían al dedillo el uso de ellas (síntoma de senior developers).

Una expresión regular, también conocida como regex, regexp, en la ciencia de la computación y la teoría de lenguaje formal, una secuencia de caracteres que forma un patrón de búsqueda, principalmente utilizada para la búsqueda de patrones de cadenas de caracteres u operaciones de sustituciones

Las expresiones regulares se tratan de una buena herramienta para cualquier developer. Su potencial es infinito ya que nos pueden resultar útil para la validación de campos o el parseo de textos a la hora de rastrear web (crawling). También resultan muy útiles la hora de editar grandes cantidades de líneas de código, análisis de logs y cientos de utilidades más.

La mayoría de los lenguajes de hoy en día incluyen la posibilidad utilizar estas expresiones regulares. Existen una gran cantidad de herramientas online para crear, debuggear y aprender nuevas expresiones regulares. A menudo, los developers solemos buscar en el señor google y solemos caer en stackoverflow (dios le bendiga) para encontrar una expresión regular válida para nuestra necesidad. Yo personalmente recomiendo que utilices algún tipo de herramienta como Regex101 donde una gran comunidad de developers se han encargado de definir, detallar las expresiones y te puedo asegurar que están más que probadas.

Regex101, es una de las herramientas que sirven como repositorio de expresiones regulares. Existen multitud de herramientas pero esta es una de mis favoritas. Tiene un gran repositorio de expresiones regulares para php, javascript, golang y python. La herramienta muestra con colores las distintas partes que compone la expresión regular y si haces hover aparece un tooltip explicativo de su composición.

En el buscador puedes encontrar expresiones para todo lo que se te pueda ocurrir. Un ejemplo que nos podemos encontrar y bastante útil es una REGEX para parsear el access.log de apache. Aquí os muestro un ejemplo de esta expresión regular:

$re = '/^(\S*).*\[(.*)\]\s"(\S*)\s(\S*)\s([^"]*)"\s(\S*)\s(\S*)\s"([^"]*)"\s"([^"]*)"$/';
$str = '52.20.244.144 - - [24/Aug/2015:06:50:57 -0400] "GET /hol/contact.action?subject=Question+about+Junior+Essay+Contest&title=Susan+Harlow&webUserKeys=13900 HTTP/1.1" 200 5921 "http://holsteinusa.com/news/press_release2015.html" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.24 (KHTML, like Gecko) Chrome/19.0.1055.1 Safari/535.24"';

preg_match($re, $str, $matches, PREG_OFFSET_CAPTURE, 0);

Esta expresión nos devuelve como resultado cada componente del log:

array(10) {
  [0] =>
  array(2) {
    [0] =>
    string(330) "52.20.244.144 - - [24/Aug/2015:06:50:57 -0400] "GET /hol/contact.action?subject=Question+about+Junior+Essay+Contest&title=Susan+Harlow&webUserKeys=13900 HTTP/1.1" 200 5921 "http://holsteinusa.com/news/press_release2015.html" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.24 (KHTML, like Gecko) Chrome/19.0.1055.1 Safari/535.24""
    [1] =>
    int(0)
  }
  [1] =>
  array(2) {
    [0] =>
    string(13) "52.20.244.144"
    [1] =>
    int(0)
  }
  [2] =>
  array(2) {
    [0] =>
    string(26) "24/Aug/2015:06:50:57 -0400"
    [1] =>
    int(19)
  }
  [3] =>
  array(2) {
    [0] =>
    string(3) "GET"
    [1] =>
    int(48)
  }
  [4] =>
  array(2) {
    [0] =>
    string(100) "/hol/contact.action?subject=Question+about+Junior+Essay+Contest&title=Susan+Harlow&webUserKeys=13900"
    [1] =>
    int(52)
  }
  [5] =>
  array(2) {
    [0] =>
    string(8) "HTTP/1.1"
    [1] =>
    int(153)
  }
  [6] =>
  array(2) {
    [0] =>
    string(3) "200"
    [1] =>
    int(163)
  }
  [7] =>
  array(2) {
    [0] =>
    string(4) "5921"
    [1] =>
    int(167)
  }
  [8] =>
  array(2) {
    [0] =>
    string(50) "http://holsteinusa.com/news/press_release2015.html"
    [1] =>
    int(173)
  }
  [9] =>
  array(2) {
    [0] =>
    string(103) "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.24 (KHTML, like Gecko) Chrome/19.0.1055.1 Safari/535.24"
    [1] =>
    int(226)
  }
}

A parte de estas herramientas te aconsejo que leas algún libro como Mastering Regular Expressions y también deberías echar un vistazo a esta cheatsheet si quieres conocer en profundidad las posibilidades.

¿Y tú que herramientas empleas para encontrar y crear tus expresiones regulares?

 

 

Categorías: Developer Tools
Tags: developer toolregex
alonsus91 :Joven ingeniero en Informática especializado en Ingeniería Web apasionado por las nuevas tecnologías y las últimas novedades en informática e Internet con ansias de conocer a fondo el mercado laboral y aportarle todos mis conocimientos.
Disqus Comments Loading...

Utilizamos cookies para asegurar que damos la mejor experiencia al usuario en nuestro sitio web. Si continúa utilizando este sitio asumiremos que está de acuerdo.