La búsqueda de información supone sin lugar a duda una tarea que todos hemos tenido que afrontar en algún momento. Investigaciones, sesiones de estudio, construcción de bases de datos, etc., son algunas de las tareas que requieren encontrar e identificar información. Cada persona, sin embargo, en función del tipo de información que necesite encontrar y el medio en el que lo busque, utilizará un método u otro. Desde la tradicional búsqueda a ojo, pasando por el histórico Ctrl + F (Windows) o Cmd + F (Mac) hasta otras formas mucho más potentes y elaboradas. Las expresiones regulares, conocidas como regex, son cadenas de código que describen patrones de búsqueda.

Mediante la definición de estas líneas de código podemos especificar patrones que describen las características que nos interesan. Por ejemplo, una combinación de letras y números determinada, palabras que contengan un acento, una diéresis, fórmulas matemáticas, texto con formato de correo electrónico, fechas, etc.

Por un lado las aplicaciones de los regex ofrecen posibilidades casi infinitas que permiten optimizar, sistematizar y reducir el tiempo de realización de tareas. Sin embargo, su uso requiere conocimientos técnicos avanzados que, con frecuencia, resultan poco atractivos para cualquiera fuera de los campos de tecnologías de la información y las comunicaciones.

Lenguajes de programación

Los regex se utilizan en diferentes contextos, aplicaciones y herramientas. En mi caso particular, oí hablar de las regex por primera vez al profundizar en el uso de herramientas de traducción asistida por ordenador (TAO). No obstante, las regex son utilizadas en editores de texto como Sublime Text o EditPad Pro, que a su vez sirven para crear y visualizar lenguajes de programación, para identificar patrones repetitivos en el código. Los editores de texto permiten la posibilidad de utilizar regex en sus funciones de búsqueda para determinar dichos patrones en el texto (código) que están visualizando. Por ejemplo, en un contexto de desarrollo web front-end (lenguajes de marcado y cascada que organizan y diseñan el contenido que se muestra al usuario a través de una pantalla) en el que el editor de texto está visualizando un documento .html, podría utilizarse la regex «.*\.css» para encontrar todos los documentos de texto con la terminación de las hojas de estilo (.css). Esta sintaxis compone una regex básica y, como he mencionado antes, se podría complicar y adaptar para cualquier propósito.

Si analizamos la regex anterior, veremos que comienza con un punto. El punto (.) en sintaxis de regex representa cualquier carácter. A continuación, el asterisco (*) es un selector genérico que se traduce, en términos semánticos, como «cualquier carácter o símbolo previo». Por último, queremos determinar la terminación .css. Para poder decir al regex que el punto pertenece a uno de los elementos de búsqueda, y no a un comando, se utiliza el símbolo (\). De esta manera, en la jerga técnica, habremos escapado el carácter (.).

«.*\.css» = encuentra o busca cualquier documento que contenga la terminación (.css) y esté precedido por cualquier carácter.

La siguiente lista es un resumen de las combinaciones semánticas o comandos más representativos de expresiones regulares:

  • . Cualquier carácter
  • \b Inicio o final de una palabra
  • \w Cualquier carácter literal (letras, números)
  • \W Cualquier carácter no literal
  • \d Cualquier dígito
  • \D Cualquier carácter menos los dígitos
  • \s Espacio, sangría, salto de línea
  • \S Lo contrario a «\s»
  • ^ Comienzo de una cadena
  • . Mecanismo de escape de caracteres
  • [a-e] Un rango de caracteres
  • [0-9] Cualquier carácter excepto los indicados
  • [abcde] Cualquiera de los caracteres indicados
  • A|B Solo uno de los dos elementos indicados
  • $ El final de una cadena
  • ? Carácter o símbolo anterior opcional
  • * Encuentra cualquier carácter o símbolo anterior al asterístico aparezca o no
  • + Encuentra cualquier carácter o símbolo que aparezca anterior al signo +
  • () Agrupa patrones
  • [] Agrupa rangos

Traducción y localización

¿Por qué son de especial interés las regex en la industria de traducción y localización? Las herramientas de traducción asistida por ordenador (TAO) y de ingeniería de localización, utilizan las regex para perfeccionar tareas de extracción de texto, análisis de terminología y de consistencia, etc.

La versatilidad que aportan las regex para identificar patrones de texto las convierte en potentes herramientas para los profesionales de la localización de páginas web, videojuegos y programas informáticos cuyos archivos originales presentan diferentes problemas para extraer texto traducible sin dañar el código que lo contiene.

Programas informáticos tales como Wordfast Pro, SDL Trados Studio o MemoQ entre otros han desarrollado funciones que, utilizando búsquedas con regex, permiten extraer secciones específicas de un documento.