Expresiones regulares y traducción (parte I)

Hace ya un tiempo escribí un post sobre expresiones regulares y QA. La cuestión es que entre ese artículo, la experiencia del día a día, los comentarios del blog y otras publicaciones me ha parecido oportuno volver a retomar el tema para proporcionar una panorámica más amplia sobre el asunto. Mi intención es ofrecer a los lectores una serie de dos o tres posts en los que poco a poco se aclare el funcionamiento y la utilidad de esta poderosa herramienta de corte informático. Por experiencia, he constatado que en materia de conocimiento y dominio de expresiones regulares, en el mundo de la traducción y la localización se aprecia un salto cualitativo en los profesionales que las aplican en su día a día para agilizar su trabajo así como garantizar una mayor calidad de su trabajo. Este es principalmente el motivo por el que me he decidido a comenzar esta serie de artículos de tono didáctico que inauguro con el presente post.

Hecha la exposición preliminar, en primer lugar es necesario aclarar que las expresiones regulares no son un lenguaje de programación en sí, sino una sintaxis especial que se incorpora (se implementa) en muchas aplicaciones creadas con diferentes lenguajes de programación. Por ejemplo, se implementan en la mayoría de las herramientas CAT. Se trata de una sintaxis enfocada a buscar (y reemplazar) cadenas o patrones de texto. Dada su naturaleza, la clave de las expresiones regulares radica pues en definir muy claramente qué patrón de texto necesitamos encontrar. Reitero la idea: las expresiones regulares por sí mismas (las reglas sintácticas) no son excesivamente complicadas, lo difícil es identificar con precisión el tipo de cadena textual que necesitamos encontrar y qué queremos hacer con ella. En otras palabras, lo complicado es usarlas para que realmente puedan ayudarnos a solucionar problemas concretos ahorrando más tiempo del que exigen para su planteamiento.

Expresiones regulares

A continuación presento una recopilación de los elementos u operadores básicos de la sintaxis de las expresiones regulares a modo de tabla de referencia rápida para el futuro y más abajo comento un ejemplo más detallado para contextualizarlas. En todos los ejemplos, se da por hecho que estamos realizando búsquedas con aplicaciones compatibles con expresiones regulares en las que la opción correspondiente está activada. Por último, hay que indicar a este respecto que estos operadores son los clásicos; puede que en algunos programas las expresiones regulares se hayan implementado variando la grafía de los operadores (por ejemplo, para negar en Word, se usa [!]).

Búsqueda de caracteres alfanuméricos
Caracteres literales: todos los caracteres alfanuméricos pueden usarse en las búsquedas, es decir, se emplean como en las búsquedas habituales. Por ejemplo: al buscar con expresiones la combinación abracad, encontraremos las palabras que contengan estos caracteres literales, como en el caso de la palabra abracadabra.. (el caracter de punto): se busca cualquier caracter, salvo el de nueva línea. Es importante resaltar que al usar el punto (.) sólo se busca un único caracter. Por ejemplo, al buscar por car.a, encontramos tanto carga como carca.

[]: los corchetes se usan para definir grupos de caracteres para la búsqueda (de forma predeterminada, no se distingue entre mayúscula y minúscula). Por ejemplo, con [012345] se encontraría cualquier ocurrencia de 0, 1, 2, 3, 4 o 5 (pero sólo una).

– []: el guión se usa para indicar un intervalo. Existen una serie de intervalos predefinidos:

– [A-Z]: se encuentra cualquier caracter entre la A y la Z en mayúscula.

– [a-z]: se encuentra cualquier caracter entre la a y la z en minúscula.

– [A-z]: se encuentra cualquier caracter ASCII entre la A y la z. Al tratarse de caracteres ASCII, se incluyen también los caracteres [ y ^.

^ (dentro de corchetes): el acento circunflejo sirve para NO encontrar todos los caracteres o grupos de caracteres indicados dentro de los corchetes, es decir, permite excluir caracteres de una búsqueda. Por ejemplo, una regexp con [^abc] no encontrará nunca ni a, ni b ni c.

Explicados los operadores textuales básicos, veamos un pequeño ejemplo práctico que combina varios operadores. Digamos que tenemos el siguiente texto totalmente ficticio:

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut luctus lacus in metus convallis sit amet consectetur leo imperdiet. PORTA01 Suspendisse suscipit hendrerit enim sed interdum. Praesent dui felis, iaculis ullamcorper iaculis eget, vestibulum eget ipsum. Phasellus fringilla rutrum turpis ut lacinia. Ut dapibus enim ut mauris feugiat auctor. In hac habitasse platea dictumst. Mauris gravida eros varius metus tristique condimentum. Sed quis mi nisi. Donec interdum malesuada Porta35 neque non laoreet. Curabitur pulvinar porta est, quis malesuada urna rutrum eget. Curabitur porta tempor sapien, ultrices condimentum tortor rhoncus et. Aliquam sit amet arcu eget leo tincidunt dignissim vitae PoRTa80 sed leo. Integer orci tellus, facilisis eget elementum tristique, ultrices quis magna. Nunc nunc magna, pulvinar tempor fermentum quis, sollicitudin sed ante.

En él se incluyen nombres de producto cuya forma sigue el patrón PORTAXX, donde XX es un número cualquiera. Por la instrucción de nuestro cliente, en el texto meta, PORTA siempre tendrá que ir en mayúscula. Por tanto, lo que nos interesa es localizar sólo los nombres de producto en el texto y comprobarlos. Para ello, en lugar de ir visualmente uno por uno o probando con las diferentes combinaciones de mayúscula y minúscula (como vemos en el texto anterior, resaltado en rojo, hay diversos formatos en el texto de partida para los nombres de producto), lo que hacemos es utilizar los operadores textuales para crear la siguiente expresión: [Pp][Oo][Rr][Tt][Aa][0-9][0-9].

Con esta expresión (que en realidad puede mejorarse, como se verá más adelante) buscamos cada una de las letras de la palabra porta en todas sus combinaciones de mayúscula y minúscula, así como, a continuación, cualquier combinación de dos números entre 0 y 9. Es interesante destacar que, con esta expresión básica, nos ahorramos las dos ocurrencias de porta (no seguidas de número) que aparecen dentro del párrafo del ejemplo.

Ahora viene la pregunta del millón: ¿para qué sirve esto en el mundo de la traducción? Bueno, como ya expliqué en mi post anterior mencionado al principio, las expresiones regulares nos permiten mejorar considerablemente las prestaciones de las funciones de control de calidad de las herramientas CAT. Por ejemplo, pueden utilizarse para, entre otras cosas (ya veremos usos más avanzados en el siguiente post de la serie), hacer búsquedas y reemplazos de terminología (buscando de una vez todas las ocurrencias en mayúscula y minúscula), para buscar patrones de texto prohibidos (por ejemplo, : [A-Z] para evitar la mayúsculas tras los dos puntos en español), para, en herramientas CAT, filtrar por tipos de segmentos que contienen determinados patrones de texto (por ejemplo, mostrar sólo los segmentos que contengan algún número [0-9]), etc.

Como se comentó al inicio, lo más difícil consiste en analizar bien nuestros problemas para, acto seguido, considerar la posibilidad de aplicar las expresiones regulares para solventar el problema.

En este primer post de la serie sobre expresiones regulares se ha tratado el concepto y la introducción a las búsquedas exclusivamente con operadores textuales básicos. En los siguientes artículos se tratará la combinación de los anteriores con otros operadores más avanzados que permiten realizar consultas más complejas. No obstante, este tipo de habilidades requiere un poco de práctica, así que os invito a probar primero con los caracteres textuales para que nadie se quede rezagado de cara al próximo post de la serie sobre expresiones regulares.

Un saludo,

Álvaro

Recomendación musical: Rob Thomas y los suyos (Matchbox Twenty) han sacado nuevo disco tras años de inactividad. Os propongo el primer corte de su nuevo álbum North, titulado Parade.

9 comentarios el “Expresiones regulares y traducción (parte I)

  1. Xavier Novella dice:

    ¡Vaya! ¡Qué intereasante! Y que suerte haber pillado el “curso” en la primera sesión…

  2. Usuario anónimo dice:

    Magnífico. Es una lástima que en los másters de localización y tal no se hable sobre estos temas y tenga que ser uno el que se ponga al día en estos temas. Yo hace unos meses no sabía ni qué eran las expresiones regulares, hasta que me tocó gestionar un gran proyecto de localización de software lleno de etiquetas y prefijos y las expresiones regulares me vinieron muy bien. A veces se necesita una gran capacidad de abstracción para saber qué es lo que necesitas y cómo puedes hacerlo, pero una vez lo consigues sientes una sensación de victoria y paz muy grande. Yo recomiendo esta web: http://www.regular-expressions.info/ Hay un tutorial bastante extenso y muy completo, todo bastante bien explicado. Si haces un capítulo donde expliques cómo hacer macros este ya sería el blog definitivo.

    • alvaromira dice:

      Hola, Usuario anónimo (¡anímate a poner el nombre, que no me gusta dirigirme al vacío!). Muchas gracias por tu comentario. De acuerdo en todo, especialmente en tu reflexión sobre la capacidad de abstracción. En realidad, se trataría de plantear los problemas con una estrategia que se acerca a la lógica filosófica, es decir, diseccionar todo muy bien. También de acuerdo en el tema de los másters de localización (estoy esperando alguna invitación a alguno, que me encantaría).
      El enlace que das justamente lo mencionaba en el primer artículo que escribí sobre QA y regexp.
      Me apunto la idea de la macro para después de esta serie de posts sobre regexp (aunque después tengo otros dos en mente, ya veremos cuándo cae ese que propones).
      Un saludo y gracias por participar.

  3. DOS ESTUDIO dice:

    Hola,

    Muchas gracias por el aporte. Es cierto, este tipo de aclaraciones no abundan y cuando nos toca hacerlo se torna un problema si no se tiene una idea ni guía a la cual consultar.
    Daré tu post como referencia cuando me pregunten por este tema y me gustaría seguir leyendo más publicaciones tuyas al respecto!!

    Saludos!

  4. […] el anterior post de esta serie sobre expresiones regulares vimos la introducción general y el uso de los operadores básicos […]

  5. […] los últimos meses publiqué una serie de artículos sobre expresiones regulares (parte I, parte II y parte III) y me llegaron algunos correos electrónicos privados con preguntas, […]

  6. Recién aterrizo en su blog. Gracias por la información que publica y enhorabuena por haber elegido tan bonita profesión.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s