Gonduana

Contenidos para traductores

  • Blog
  • Empieza por aquí
    • Encuesta: coger
    • Encuesta: ratón o mouse
    • Artículos más leídos
    • Vídeos más vistos
    • Gonduana en las redes sociales
    • ¿Quieres saber más sobre mí?
  • Recursos
    • Software para traductores
    • Hardware para traductores
    • Internet para traductores
    • WordPress para traductores
  • Sobre mí
  • Servicios
  • Contacto

Expresiones regulares (2): negación, opciones, grupos y repeticiones

Publicado el 28/enero/2015 por Jesús Prieto

regex mapa mundiSeguimos con las expresiones regulares desde el punto que lo dejamos en el anterior artículo.

Ya sabes que puedes probar fácilmente las expresiones regulares en los filtros de Studio, pero su utilidad va más allá de los filtros. Consulta el anterior artículo o este otro para más información; también puedes ver las expresiones regulares en acción en este vídeo de YouTube.

Empezamos, entonces, en el punto número 4…

Índice

  • 4. Negación, también con el sombrero ^:
  • 5. La barra vertical | para opciones
  • 6. Los paréntesis () para agrupar
  • 7. Repeticiones hasta la saciedad
    • 7.a. Signo + para indicar 1 o más veces
    • 7.b. Signo * para indicar ninguna, 1 o más veces
    • 7.c. Signo ? para indicar una o ninguna vez
    • 7.d. Llaves {x,y} si sabes el número de repeticiones
  • La madre de todas las expresiones regulares

4. Negación, también con el sombrero ^:

A veces, puede ser más cómodo, especificar en el filtro lo que no queremos, y aquí el sombrero ^ es muy útil. Lo vemos con varios ejemplos:

El patrón gui[^o]n encontrará los segmentos con la palabra guión,  pero no con guion, por ejemplo.

No te dejes liar: si tienes este segmento de Studio tanto guion como guión son correctos, si filtras con el patrón gui[^o]n, se mostrará dicho segmento en el Editor. El motivo es que el filtro ha encontrado guión, y el resto del segmento le da igual. Esto tiene que estar claro antes de seguir…

Gráficamente, el patrón gui[^o]n:

negación - guión

El patrón [^a]$ encontrará todos los segmentos que no terminan por la letra a:

negación - no terminar por letra a

Recuerda que $ indica el final de segmento.

Para encontrar todos los segmentos que no empiezan por un número decimal, el patrón sería ^[^\d]:

negación - no empezar por un número

Que no te confunda el doble significado del sombrero ^:

  • Fuera de corchetes , ^ significa que hay que buscar desde el principio del segmento (visto en la entrada anterior). Es el primer sombrero del patrón ^[^\d].
  • Entre corchetes, ^ significa negación de lo que sigue. Es el segundo sombrero de ^[^\d].

¿Sabrías ahora decir a qué expresión regular corresponde esta figura?

Pregunta de expresiones regulares en los filtros de Studio

Piénsalo un segundo, un solo segundo…, y confirma que es [^\d]$.

5. La barra vertical | para opciones

Cuando necesitamos dar opciones de búsqueda, la barra vertical | viene en nuestra ayuda.

Por ejemplo, el patrón gonduana|gondwana encontrará todos los segmentos con las cadenas gonduana y/o con gondwana.

O dicho gráficamente:

expresiones regulares: gonduana barras

Como no es un carácter habitual, si quieres saber dónde está la barra vertical en tu teclado, puedes encontrarlo en:

  • el teclado para España (en la tecla «1»)
  • el teclado para Hispanoamérica (a la izquierda de la tecla «1»)

Nota: a la barra vertical también se la llama pleca.

6. Los paréntesis () para agrupar

Lo que sigue parece una palabra malsonante…, pero nada más lejos de la realidad.

Léelo bien: el patrón (p|m)adre encontrará todos los segmentos con las cadenas padre y/o con madre.

🙂

O dicho gráficamente:

expresiones regulares: paréntesis

A efectos prácticos, sería equivalente a padre|madre, ¿verdad?

Aunque el gráfico sería algo distinto:

expresiones regulares: paréntesis 2

 

Una vez aclarado esto, ¿lo podemos complicar un poco más?

El patrón (p|m|[^PM])adre encontrará madre o padre, pero no Padre ni Madre.

expresiones regulares: paréntesis - con negación

Recuerda que para ejecutar el anterior patrón, en el filtro de Studio deberás pulsar el botón:

Sí distinguir entre mayúsculas y minúsculas

Por cierto, para que veas que la sintaxis es importante: si en el filtro de Studio se te olvidara escribir algún paréntesis del patrón (p|m|[^lPM])adre , recibirías el siguiente mensaje:

mensaje de error en filtros

7. Repeticiones hasta la saciedad

Con las expresiones regulares podemos especificar las repeticiones. Puede ser muy útil, así que conviene aprender las posibilidades que hay:

7.a. Signo + para indicar 1 o más veces

Por ejemplo, el patrón a+ encontrará por lo menos una letra a. Por tanto, encontraría a, aa y aaaa.

expresiones regulares: a más

El patrón \d+ encontrará 1, 12, 135 y 894, que en la práctica sería lo mismo que [0-9]+.

7.b. Signo * para indicar ninguna, 1 o más veces

Es parecido al signo más +, pero la diferencia es sutil: además, ¡puede no aparecer ninguna vez!

El patrón a* gráficamente es:

expresiones regulares: a asterisco

Quizás con un ejemplo práctico, verás la diferencia práctica con el signo más +.

El patrón pol*o encontrará polo, poo y pollo. Se entiende, ¿verdad?

expresiones regulares: pollo asterisco

Nota: como ves, el asterisco * regex tiene un significado diferente al comodín * de Microsoft Word. Cuesta pillarlo, y hasta despista, lo sé…

7.c. Signo ? para indicar una o ninguna vez

De nuevo, la diferencia es sutil: el carácter se puede repetir una o ninguna vez

El patrón pol?o encontrará poo y polo.

Gráficamente es así:

expresiones regulares: polo interrogación

Como has podido ver, los signos +, * y ? se aplican al carácter inmediatamente anterior. Si quieres buscar repeticiones de más de un carácter, deberás usar los paréntesis.

Por ejemplo, el patrón (yo)+ encontrará yo y yoyo.

expresiones regulares: yo repetido

7.d. Llaves {x,y} si sabes el número de repeticiones

Las sintaxis posibles son tres:

{x} si se repite x veces

Un solo parámetro entre llaves: el número exacto de repeticiones.

Por ejemplo, el patrón bar{2}a encontrará barra, pero no bara ni barrra.

expresiones regulares: llaves x veces

{x,y} si se repite entre x e y veces

Dos parámetros entre llaves: el mínimo y máximo de repeticiones.

Por ejemplo, el patrón bar{1,2}a encontrará bara o barra, pero no barrra.

expresiones regulares: llaves entre x e y veces

{x,} si se repite al menos x veces

Un solo parámetro entre llaves, pero seguido de una coma: el mínimo de repeticiones.

Por ejemplo, el patrón bar{1,}a encontrará bara, barra, barra y barrra, etc.

expresiones regulares: llaves al menos x veces

* * * * * * * * *

Pregunta: ¿sabrías decir lo que encontraría el patrón ISO\d{1,4}?

Si contestas que las cadenas entre ISO0 e ISO9999, has dado en el clavo:

expresiones regulares: ISO llaves entre 1 y 4 veces

* * * * * * * * *

Pregunta: si quisieras filtrar en Studio todos los segmentos que tienen más de cuatro dígitos en la traducción, porque podría indicar que la separación de millares no está marcada de alguna forma (con el punto en España, con la coma en México o con un espacio duro según la última recomendación de la RAE), ¿cuál es el patrón que necesitarías?

La respuesta es \d{5,}, un patrón que encontrará 10000, y en el Editor podrás corregirlo fácilmente a «10.000», por ejemplo. Como ves, otra aplicación práctica de las expresiones regulares para tu proceso de calidad.

* * * * * * * * *

Pregunta: si quisieras filtrar en Studio todos los segmentos que tienen un dígito seguido de una letra, como carrera de 10km o potencia de 99W, porque podría indicar que no se ha separado la cifra de la unidad de medida, ¿cuál es el patrón que necesitarías?

El patrón que deberías usar es \d[a-z], ya que encontrará los segmentos con las cadenas 0k o 9W, y en el Editor podrás corregirlos fácilmente a «10 km» y «99 W». ¡Otra aplicación práctica de las expresiones regulares para tu proceso de calidad!

La madre de todas las expresiones regulares

Como ejemplo de lo visto hasta ahora, vamos a diseñar un patrón más complicado: el que encuentre direcciones de correo electrónico válidas del tipo:

nombre.1-a_parte@dominio1.com

¡Divide y vencerás!

decían Julio César y Napoleón.

Pues nosotros dividiremos la cadena en 3 partes, para conquistar esta expresión regular.

Para encontrar la primera parte, nombre.1-a_parte@, que está a la izquierda del símbolo de arroba @, hay que saber que esta parte puede contener letras, números, puntos, caracteres de subrayado y guiones.

Con ese dato en mente, el patrón [a-z0-9_.-] podrá encontrar uno de esos caracteres, ¿verdad?

Pues bien, está claro que con el patrón [a-z0-9_.-]+ ya tenemos la primera parte nombre.1-a_parte.

Date cuenta de que he puesto el signo + y no * porque debe haber al menos un carácter.

Luego va el símbolo de arroba @, ¿verdad?

Así que el patrón [a-z0-9_.-]+@  encontrará hasta la arroba incluida, es decir: nombre.1-a_parte@.

La segunda parte, es decir, el nombre de dominio, no puede tener subrayados ni puntos, así que el patrón [a-z0-9]+\. nos encontrará dominio1., (incluido el punto).

En la tercera parte, es decir, en el dominio de nivel superior (la cadena com) solo hay letras, así que el patrón [a-z]{2,} nos servirá.

Fíjate que el valor mínimo de «2» del primer parámetro permite encontrar los dominios de 2 letras, como el es. No se escribe el segundo parámetro para poder encontrar los dominios info o de más letras aún.

Todo junto, el patrón [a-z0-9_.-]+@[a-z0-9]+\.[a-z]{2,} nos encontrará las direcciones de correo electrónico válidas nombre.1-a_parte@dominio1.com:

expresiones regulares: ejemplo de repeticiones

Ha sido largo de contar, pero no ha sido difícil, ¿verdad?

Si estás de acuerdo en que no ha sido complicado, te voy a pedir una cosa más: que diseñes el patrón que haga lo mismo, es decir, que encuentre direcciones de correo electrónico, pero con la restricción de que la segunda parte, es decir, el nombre de dominio, tenga como mínimo 2 caracteres y 63 como máximo (que si no me equivoco es lo que sucede en la realidad). Para ello, básate en el el patrón que te he dado, y modifícalo un poquito…

Sinceramente, si has llegado hasta aquí, ¡estás preparado para el asalto a las expresiones regulares!

Aún faltan cosas por contar, es verdad, pero ya tienes mucho avanzado si sabes sacar el jugo a lo que hemos visto en estos tres artículos dedicados a las expresiones regulares.

Si necesitas recuperar el norte, y saber para qué sirve todo este jaleo de las expresiones regulares, en este vídeo de YouTube te indico casos prácticos de las expresiones regulares en los filtros de Studio.

* * * * * * * * *

Como en anteriores artículos, las versiones gráficas de los patrones han sido posibles gracias a www.regexper.com.

Abre ese enlace para probar tus expresiones regulares. ¡Ya sabes que es una web gratuita!

En próximos artículos, seguiremos tocando las expresiones regulares.

Así que si no quieres perderte la siguiente entrega sobre expresiones regulares, apúntate a mi boletín o sígueme en Twitter (@jssprt), y te avisaré en cuanto salgan.

Entradas relacionadas

Si te ha gustado el artículo, además de compartirlo en tus redes sociales,

puedes leer otros artículos de Gonduana del mismo estilo:

Funciones de expresiones regulares en Excel

Funciones de expresiones regulares en Excel

7/enero/2025

Si tienes Microsoft Excel 365, ya puedes utilizar las nuevas funciones de expresiones regulares en Excel. Me refiero a las siguientes tres nuevas funciones:

Leer el artículo »
Reemplazar todo en Trados Studio 2024 CU1

Reemplazar todo en Trados Studio 2024

17/octubre/2024

Un apunte rápido sobre la nueva versión de Trados Studio 2024 CU1. Imagínate que quieres reemplazar todos los «sólo» por «solo» en Trados Studio 2024.

Leer el artículo »

Cosas que he aprendido este año 2022

30/diciembre/2022

Quería compartir las cosas que aprendí este año, algunas serán obvias para ti, otras no te llamarán la atención, espero que haya alguna que sea

Leer el artículo »
Escribir el símbolo de marca registrada y superíndice 2

Cómo escribir el símbolo de marca registrada ®

30/septiembre/2019

Si quieres escribir el símbolo de marca registrada, es decir, ®, te presento aquí la forma de hacerlo en Word, Trados Studio y en cualquier

Leer el artículo »
Seleccionar todos los segmentos de Trados Studio 2019

Cómo seleccionar todos los segmentos de Trados

18/marzo/2019

¿Quieres seleccionar todos los segmentos de Trados? ¡Pues hay muy buenas noticias! Porque desde la versión «Cumulative Update 2 de SDL Trados Studio 2019 SR1»

Leer el artículo »
Pantalla de presentación de Trados Studio

Cómo es la pantalla de presentación de Trados Studio

1/diciembre/2018

Si estás leyendo esto es porque trabajas con la aplicación de Trados Studio. ¿Sí? Vamos bien… No creo que me equivoque si afirmo que al

Leer el artículo »
Jesús Prieto

Jesús Prieto

Querido traductor: quiero compartir contigo muchas cosas que podrás aprovechar como profesional: desde herramientas especiales hasta técnicas comerciales; desde estrategias de marketing hasta trucos de productividad personal; desde cómo diseñar tu marca personal hasta novedades de impuestos.
Todos los artículos

Publicado en: productividad, software Etiquetado como: regex, Trados Studio

Comentarios

  1. Anónimo dice

    12/abril/2019 a las 4:32 pm

    "Los paréntesis () para agrupar" muy bien explicado, gracias por cuidar el detalle.

    Responder
    • Jesús Prieto dice

      13/abril/2019 a las 9:49 am

      Gracias a ti. Espero que te sirva lo poco de expresiones regulares que hay en el blog.
      Un abrazo,
      … Jesús Prieto …

      Responder
  2. dani dice

    18/diciembre/2023 a las 9:19 pm

    buenas tardes me gustaria saber como es el simbolo regular para buscar las ultimas palabras de un verso en cualquiera de los programas geany o notepad gracias

    Responder
    • Jesús Prieto dice

      19/diciembre/2023 a las 1:18 pm

      Hola, Dani:
      En Notepad++ puedes marcar las últimas letras de cada línea con una expresión regular como esta:
      ...$
      3 puntos seguidos y el símbolo de dólar. En este caso, marcará los 3 últimos caracteres porque hay 3 puntos. A partir de aquí puedes pensar en buscar palabras.
      No conozco Geany, así que ahí no sé si funcionará…
      ¡Suerte!
      … Jesús Prieto …

      Responder

Comentar Cancelar la respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

 

Jesús Prieto

Jesús Prieto 2015

Sobre mí

Lo más visto…

Artículos más leídos de Gonduana
Vídeos más vistos de Gonduana
Gonduana en las redes sociales

Últimos artículos

  • Celda de enfoque en Excel
  • Cómo utilizar la función TRADUCIR en Excel
  • Funciones de expresiones regulares en Excel
  • Reemplazar todo en Trados Studio 2024
  • Cosas que he aprendido este año 2022
  • Cómo escribir letras griegas con AutoHotkey
  • Macro de VBA para pegar sin formato en Word
  • Macro de AutoHotkey para pegar sin formato en Word
  • Extranjerismos en el ajedrez
  • Cómo buscar en el diccionario de la RAE con AutoHotkey

Nube de etiquetas

anglicismos AutoHotkey cobros comodines copias de seguridad correo español Excel foto fórmulas geografía geometría GTD historia imagen impagos InDesign libros marca matemáticas mouse MT ortografía Outlook parábolas PDF PHP poesía power PowerPoint RAE ratón regex retrasos tarifas teclado tipografía TM Trados Studio VBA vídeo Word WordPress XML zoología

Categorías

  • adaptación (3)
  • blog (11)
  • comercial (24)
  • contabilidad (2)
  • español (6)
  • etimología (5)
  • fiscalidad (2)
  • hardware (3)
  • macros (42)
  • marketing (8)
  • noticias (4)
  • productividad (43)
  • seguridad (5)
  • social (9)
  • software (41)
  • TAO (40)
  • terminología (9)
  • traducción automática (3)
  • traducción literaria (1)
  • tradumática (40)
  • vídeo (18)
Buscar en Gonduana
Política de privacidad
Política de cookies
Aviso legal
Creative Commons

Licencia Creative Commons

Blog de Gonduana: recursos para traductores

Esta web usa cookies
Es cansino, sí, pero la ley europea me obliga a avisarte que este blog, como casi el 100%, usa cookies para recabar datos. ¿Estás de acuerdo con mi Política de cookies? Vale Rechazar Más información
Política de cookies

Privacy Overview

This website uses cookies to improve your experience while you navigate through the website. Out of these cookies, the cookies that are categorized as necessary are stored on your browser as they are as essential for the working of basic functionalities of the website. We also use third-party cookies that help us analyze and understand how you use this website. These cookies will be stored in your browser only with your consent. You also have the option to opt-out of these cookies. But opting out of some of these cookies may have an effect on your browsing experience.
Necessary
Siempre activado
Necessary cookies are absolutely essential for the website to function properly. This category only includes cookies that ensures basic functionalities and security features of the website. These cookies do not store any personal information.
GUARDAR Y ACEPTAR