Ya hemos visto las expresiones regulares en los filtros de SDL Trados Studio en todos estos artículos ya publicados.
Esta vez vamos a ver las expresiones regulares desde un punto de vista distinto a los filtros: vamos a aprovecharlas para buscar y reemplazar textos dentro de Trados Studio.
En el siguiente artículo te demostraré que buscar y reemplazar con expresiones regulares es muy parecido a hacerlo con los comodines de Microsoft Word.
Imagina que tu mejor cliente te envía hoy un documento para traducir; un documento muy «especial», porque tiene muchas líneas de este estilo:
Lorem Ipsum dolor 20150217
sit amet, consectetuer adipiscingelit 20141130
Duis tellus. Donec ante dolor 20141202
La traducción no presenta ningún problema para ti, pero el cliente te pide que le cambies ligeramente los números. En el idioma original, cada número, va en este orden: año (4 primeras cifras), mes (2 cifras siguientes) y día (2 últimas cifras), pero tu cliente quiere que la traducción sea día-mes-año.
Por ejemplo, «20150217» debería traducirse por «17022015». Se entiende, ¿verdad?
Horrorizado, ves que el documento está plagado de estos segmentos, estimas que son centenares y centenares de segmentos que tendrás que cambiar a mano, uno a uno. Te imaginas una labor ingrata y eterna, ¿verdad? Además, te empieza a corroer la duda de si no vas a cometer ningún error mientras cambias los números…
Aquí es cuando dices eso de:
¡Odio mi trabajo!
🙁
Y te entran ganas de llamar a tu cliente para decirle que ¡eso no se le hace a un proveedor!
Yo te diría entonces que:
Si lloras, las lágrimas no te dejarán ver las estrellas.
A su modo, Rabindranath Tagore quiere decir que no te vengas abajo, ¡y menos cuando ya está llegando el séptimo de caballería!, porque… las expresiones regulares vienen en tu ayuda.
🙂
¿Empezamos ya en serio?
Las expresiones regulares en tu ayuda
Fíate de mí: traduce todo el documento en Studio como si no tuvieras que cambiar esos números, y déjalos tal cual, porque al final haremos un reemplazo global con la ayuda inestimable de las expresiones regulares.
Así pues, tienes el documento ya traducido:
Ahora necesitamos el cuadro de diálogo Reemplazar (está a la derecha de la cinta Inicio, o bien usa el atajo de teclado CTRL+H):
Ahora lo tienes vacío, solo hay que rellenarlo con los valores apropiados, y tendremos cambiados todos los números en un par de minutos.
En el cuadro de texto Buscar, necesitamos escribir un patrón regex que encuentre 8 dígitos decimales, como 20150217.
El patrón \d{8} lo cumple, ¿verdad?
Recuerda que el número entre llaves del patrón hará que se busque lo que antecede, repetido ese número exacto de veces. Así que, por ejemplo, el patrón \d{4} encontrará cuatro números seguidos, como 2015.
Pero como queremos separar el año, del mes y del día, necesitamos algo más parecido a este otro patrón: \d{4}\d{2}\d{2}.
Aunque el anterior patrón \d{4}\d{2}\d{2} encontraría la cadena 20150217, aún necesitamos modificarlo un poco más porque necesitamos poder diferenciar cada parte. Paciencia, lo entenderás en un momento…
Este patrón definitivo que necesitamos:
(\d{4})(\d{2})(\d{2}).
Este patrón es exactamente igual al anterior, excepto que hemos agrupado con paréntesis para, más adelante, poder hacer referencia a cada uno de los tres grupos: año, mes y día.
Ya vimos los paréntesis en este artículo antiguo (por si le quieres echar un vistazo).
Escribimos este patrón en el cuadro de texto Buscar:
Vamos ahora con el cuadro de texto Reemplazar por, que aún está vacío.
Aquí, recordamos la ignominiosa petición del cliente, hay que cambiar el orden de los grupos: el año-mes-día, como en 20150217, debe cambiarse a día-mes-año, es decir, a 17022015, lo recuerdas, ¿verdad?
En regex, el patrón de reemplazo $1 se corresponde con el primer grupo, $2 con el segundo, y $3 con el tercer grupo que hay en el cuadro de texto Buscar.
Así pues, escribiremos el patrón de sustitución $3$2$1 en el cuadro de texto Reemplazar por:
Ya lo tenemos, y no olvides marcar la casilla Utilizar y seleccionar Expresiones regulares en la la lista desplegable.
Si pulsas el botón Buscar siguiente, Studio encontrará la primera aparición del número que queremos cambiar:
Ahora podrás pulsar el botón Reeemplazar, y el número cambiará a lo que te pide tu cliente:
¿Ves que ha cambiado el primer segmento?
Studio salta automáticamente al siguiente segmento donde encuentra la cadena de búsqueda. Así podrías ir reemplazando todos los números, y estarás completamente seguro de que no te has equivocado en el proceso.
Como siempre en estos casos: mucho cuidadito con el botón Reemplazar todo.
Nomenclatura de colores
Recordamos la nomenclatura empleada en este y otros artículos sobre expresiones regulares:
- los patrones de búsqueda irán sobre fondo verde, por ejemplo, Gond[uw]ana;
- cada patrón buscará una cadena, por ejemplo Gonduana, sobre fondo de color azul;
- el patrón de sustitución, por ejemplo Blog $1, irá sobre fondo amarillo;
- la cadena final sustituida será Blog Gonduana, e irá sobre fondo de color verde.
Ejercicios
Para comprobar que comprendes las expresiones regulares para la tarea de reemplazar cadenas de texto en el idioma destino de SDL Trados Studio, te propongo que diseñes los patrones de búsqueda y de sustitución que encuentran y reemplazan así:
- Un número seguido de espacio y seguido de una letra, por ejemplo 5 W. El motivo es que vas a sustituir este espacio por un espacio duro.
- «USB» seguido de un espacio, un número, un punto y un número, por ejemplo USB 3.0. El motivo es que vas a sustituir el espacio por un espacio duro.
- Nombres de protocolos, como RS232 o RS485 y los reemplace por «RS» seguido de un guión y el número de tres cifras que corresponda, como RS-232 o RS-485.
- Fechas en formato corto, como 2/enero/2015, y las sustituye por la versión en formato largo: 2 de enero de 2015.
Como ves, estos son patrones más de la vida real, tan reales que uso algunos como parte del proceso de QA.
En fin, si quieres participar, dando los patrones de búsqueda y de sustitución en Studio, solo tienes que escribir tus patrones en un comentario debajo, o en Twitter usando las etiquetas siguientes:
#regexSDL1, #regexSDL2, #regexSDL3, #regexSDL4 para los cuatro patrones de expresiones regulares pedidos, respectivamente.
Si quieres proponer otro problema, solo tienes que escribirlo abajo en los comentarios del blog o en Twitter (con las etiquetas #regexSDL5, #regexSDL6…).
Conclusiones de las expresiones regulares para buscar y reemplazar
Las expresiones regulares pueden evitarte momentos miserables y hacer tareas aparentemente tediosas y en cuestión de segundos o pocos minutos.
Repite conmigo: ¡Me encantan las expresiones regulares para buscar y reemplazar cadenas de texto!
Por supuesto, hemos visto expresiones regulares para buscar y reemplazar en Studio, pero lo dicho puede servir para otras herramientas de traducción.
No digo que las expresiones regulares sean fáciles, pero sabré refutar que sean dificilísimas. Lo que sí afirmo es que me parece ver demasiados traductores que no quieren saber nada de regex, cuando es una herramienta muy potente para que puedan entregar un mejor trabajo y más rápido. Tú decides el bando en el que quieres estar…
* * * * *
Nada más, siéntete libre de comentar lo que quieras o de suscribirte a mi boletín para no perderte ninguno de estos artículos.
Derechos de la imagen con «regex», de 123RF.
Primer problema: Buscar un número seguido de espacio y seguido de una letra, por ejemplo 5 W. El motivo es que vas a sustituir este espacio por un espacio duro.
Solución:
Patrón de búsqueda: (\d) ([a-z])
Patrón de sustitución: $1 $2
Nota: en el patrón de sustitución, el espacio que se ve es un espacio duro, que sale al pulsar ALT+0160. Aparentemente es un espacio «normal», pero al reemplazar se ve claro que es un espacio duro.
¿Alguna otra forma de hacerlo?
... Jesús Prieto ...
tengo que reemplazar: 000.00002.05000.00002.05000.00 y lo que debo obtener seria:
000.00 002.05 000.00 002.05 000.00 estaria separado por espacio, como seria ?
Hola, Darío:
No sería difícil encontrar la expresión regular para lo que quieres. Cuando la consigas, no olvides ponerla aquí, para que pueda servir para otros. Muchos te lo agradecerán…
Un saludo.
… Jesús Prieto …