Expresiones regulares que funcionan en cualquier herramienta

Fuentes: Regular expressions that work "everywhere"

Las expresiones regulares son una de las herramientas más extendidas en programación y procesamiento de texto, pero su gran debilidad es la fragmentación: cada motor (sed, awk, grep, Emacs, Perl, PCRE) implementa un subconjunto distinto de sintaxis y funcionalidades, lo que provoca que un patrón que funciona en un entorno falle en otro. Este artículo identifica un núcleo de características comunes que se comporta de forma consistente en sed, awk, grep y Emacs, las utilidades que el autor necesita usar en equipos donde no puede instalar software.

El texto repasa los distintos grados de compatibilidad. El denominador común más estricto se reduce a literales, clases de caracteres y los metacaracteres . * ^ $. Un nivel intermedio más útil lo aporta GNU awk, cuyas funcionalidades son compartidas por las versiones GNU de sed y grep con la opción -E, salvo por las fronteras de palabra, que en awk se escriben \< y > en lugar de \b y \B. Emacs introduce matices adicionales: los caracteres + ? ( ) { } | deben ir precedidos de barra invertida para actuar como en awk, y los equivalentes a \s y \S son \s- y \S-, donde - denota el espacio dentro de una clase de caracteres más amplia.

A partir de ahí, el autor define su conjunto "universal": coincidencias con ., anclas ^ y $, clases con [...] y [^...], cuantificadores *, ? y +, alternancia |, conteo con {n,m}, capturas con (...), referencias inversas \1 a \9, y los atajos \w, \W, \s, \S, \b y \B. La lista permite escribir expresiones regulares portables, aunque su utilidad real depende del subconjunto de herramientas que cada usuario necesite soportar.