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).

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?

Full Stack Web Developer — adrianalonso.es

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store