Importar utilidades

Regex (TMS)

El contenido se traduce automáticamente del inglés por Phrase Language AI.

La expresión regular (abreviada como regex o regex) es una secuencia de caracteres que forma un patrón de búsqueda principalmente para su uso en la coincidencia de patrones con cadenas o coincidencia de cadenas. La funcionalidad es similar a las operaciones de buscar y reemplazar con más complejidad y especificidad o como un método para excluir contenido definido. Consulte la entrada de wikipedia para una descripción detallada de regex y una tabla de caracteres utilizados.

Para usar múltiples regex a la vez, inserte un carácter de tubería | entre ellos.

Regex se puede usar en los campos de filtrar, buscar y reemplazar en el editor CAT, en los campos de origen y destino de la función de búsqueda de contenido, para la función de Convertir a etiquetas en configuración de importación de archivos y para personalizar reglas de segmentación. El convertidor y el editor de escritorio CAT utilizan Java regex, mientras que el editor web CAT y la búsqueda en TMS utilizan el motor Lucene regex.

Consejo

Los chatbots de IA pueden ser muy efectivos para generar y verificar regex.

Usa herramientas como Regex101 para probar regex con diferentes entradas.

Importante

Phrase admite Java regex, pero rechazará expresiones regulares complejas para proteger el sistema de sobrecargas. Las regex complejas son aquellas con cuantificadores (excepto posesivos) en grupos que contienen otros cuantificadores (excepto posesivos).

Ejemplos Generales

Ejemplos para convertir texto en etiquetas al importar archivos y usar regex en el editor de escritorio para funciones de filtrado y buscar y reemplazar:

Ejemplo

Descripción

<[^>]+>

represents <html_tag>

\{[^\}]+\}

representa {variable},

\[[^\]]+\]

representa [variable],

\[\[.+?\]\]

representa [[aa[11]bb]].

\$[^\$]+\$

represents $operator_Name1$.

\d+

representa números. También, [0-9]+

[A-Za-z0-9]

representa cualquier carácter alfanumérico.

.+\@.+\..+

dirección de correo electrónico name@domain.com

\d{4}[-]\d{2}[-]\d{2}

la fecha 2018-08-01

\s$

un espacio en blanco al final del segmento

^\s

un espacio en blanco al principio del segmento

\s\s

un doble espacio en blanco

^\d

un dígito al principio del segmento

\w+\s\s\w+

un doble espacio entre palabras

\s\n

una nueva línea precedida por cualquier carácter de espacio en blanco

\S\n

una nueva línea precedida por cualquier carácter que no sea un espacio en blanco

<[^>]+>|\$[^=]+=

convierte variables de php y código html ($svariable['name'] =)

^\s*\'[^:]+:

convierte la clave del campo de javascript con espacios añadidos al principio de la línea ( 'key' :)

\{\{[^\}]+\}\}|\'[^']+\'

no traduce {{text here}} '{{text here}} contenido y lo convierte en etiquetas

\{\{[^\}]+\}\}

representa texto entre corchetes {{}}

\([^\)]+\)

representa texto entre paréntesis ()

\^[^\^]+\^

representa texto entre marcas ^

\@[^\@]+\@

representa texto entre marcas @

\^[^\^\?]+\?

representa texto entre los marcadores ^ y ?

\'[^']+\'

representa texto entre los apóstrofes ' '

\"[^"]+\"

representa texto entre las comillas ""

\%[^\%]+\%

representa texto entre los símbolos %

\$\{[^}]*\}

representa texto entre ${ y }, por ejemplo, ${variable}

\$[a-zA-Z0-9\-_]+

representa una cadena que comienza con $, por ejemplo, $appName

(?<=\: ").*(?=")

representa texto dentro de comillas dobles después de dos puntos y un espacio, por ejemplo, valor en la cadena "clave": "valor"

(?<=\: ').*(?=')

representa texto dentro de comillas simples después de dos puntos y un espacio, por ejemplo, JohnDoe en la cadena usuario: 'JohnDoe'

(?<=\=).*(?=)

representa texto después de un signo igual y sin espacio, por ejemplo, clave=valor

(.*)=

representa texto antes de un signo igual

=(.*)

representa el texto después de un signo igual

\/\/\S*

representa hipervínculos. Además, https:\/\/\S*

</?mrk[^>]*>

representa etiquetas mrk HTML/XML abiertas y cerradas, por ejemplo, <mrk id="abc"> y </mrk>

Importar TXT

Nota

Dado que los archivos TXT en TMS se procesan línea por línea, ciertas expresiones regulares que funcionan en otros entornos pueden no funcionar como se espera.

Ejemplos de expresiones regulares al importar un texto específico:

  1. ## MensajeDeError ##1## El número debe ser mayor que 0. ##Z##

    Para importar texto entre ##1## y ##Z##, usa regex: (?<=##1## ).*(?= ##Z##)

  2. MensajeDeError ("El número debe ser mayor que 0.")

    Para importar texto entre (" y "), usa regex: (?<=\(").*(?="\))

  3. 'mensajeDeError' = 'El número debe ser mayor que 0.'

    Para importar texto después del signo = y entre ' y ', usa regex: (?<=\= ').*(?=')

  4. mensajeDeError = "esto se va a traducir"

    Para importar texto después del signo = y entre 'y' usa regex: (?<=\= ").*(?=")

  5. msgstr ("El número debe ser mayor que 0.")

    Para importar cadenas msgstr en archivos PO monolingües usando un filtro TXT, usa regex: (?<=msgstr ").*(?=")

  6. # Nota: Esta es una nota

    Para excluir líneas que comienzan con #, usa regex: (^[^#].*)

  7. valores '126', 'DCeT', 'Texto (en)'

    Para importar solo texto entre comillas y con (en), como Texto (en)', usa regex: (?<=')[^']*\(en\)(?=')

Importar JSON

Ejemplo de estructura JSON:

{
"lista": {
        "id": "1",
        "value": "text 1 for translation."
        },
"text": {
        "id": "2",
        "value": "text 2 for translation."
        },
"menú": {
        "id": "3",
        "value": "text 3 for translation."
         },"array": ["blue","green"],"arrays": [{        "color": "blue",        "title": "BLUE"
         },         {        "color": "green",        "title": "GREEN"         }    ]}
  • para importar cada valor sin importar el nivel, usa: (^|.*/)valor

  • para importar solo un valor de una lista, usa: lista/valor

  • para importar un valor de una lista y/o menú, usa el operador | (O): lista/valor|menú/valor

  • para importar solo la primera instancia de un valor de un menú, usa: menú\[1\]/valor

  • para importar el contenido de un array JSON siguiendo una clave determinada, usa: (^|.*/)array\[.*\]

  • para importar el contenido de un array específico de objetos, usa: (^|.*/)arrays\[.*\].*

Importar YAML

Ejemplo de archivo YAML:

title: A
text: translate A
categories:
  title: B
  text: translate B
categories:
  title: C
  text: translate C
categories:
  content:
      title: D
      text: translate D

regex para importar:

  • solo 'traducir A' : texto

  • solo 'traducir C': categorías\[2\]/texto

  • solo 'traducir D': categorías\[\d+\]/contenido[\1\]/texto

  • todo el texto: texto|categorías\[\d+\]/texto|categorías\[\d+\]/contenido[\d+\]/texto

Reglas de Segmentación

Okapi, Java y Unicode se utilizan para las reglas de segmentación en archivos .SRX.

Usar expresiones regulares en archivos .SRX es complejo y se recomienda tener un conocimiento básico del uso de expresiones regulares antes de intentar trabajar con ellas.

Las reglas de No ruptura (Abreviaturas, etc.) y las reglas de ruptura (Fin de la oración con un punto, etc.) están en archivos .SRX.

Ejemplo

Descripción

[\p{C}]

Carácter de control invisible.

[\p{Z}]

Espacio en blanco

[\p{Lu}]

Una letra mayúscula que tiene una variante en minúscula.

[\p{N}]

Cualquier tipo de carácter numérico.

\Q ... \E

Inicio y fin de una cita - (\QAprox.\E). Esto se utiliza para abreviaturas.

\t

Tabulador

\n

Nueva línea

\u2029

Separador de párrafo

\u200B

Espacio de ancho cero

\u3002

Punto ideográfico completo

\ufe52

Pequeño punto

\uff0e

Punto de ancho completo

\uff61

Punto ideográfico de medio ancho

\ufe56

Pequeño signo de interrogación

\uff1f

Signo de interrogación de ancho completo

\u203c

Doble signo de exclamación

\u2048

Signo de interrogación exclamativo

\u2762

Adorno de signo de exclamación pesado

\u2763

Adorno de signo de exclamación de corazón pesado

\ufe57

Pequeño signo de exclamación

\uff01

Signo de exclamación de ancho completo

`[\u0080-\uFFFF]+`

Caracteres del rango Unicode \u0080 a \uFFFF

`[\u00a8\u00b9\u00c4]+`

Una o más ocurrencias de los caracteres Unicode especificados dentro de los corchetes cuadrados, por ejemplo, \u00a8 + \u00b9 + \u00c4

Comprobaciones de QA personalizadas comunes

Control de calidad

Expresión regular de origen

Expresión regular de destino

Números adicionales en el destino

\d 

\d 

Orden de etiquetas (sin emparejar, para segmentos con 3 etiquetas).

Ajuste la expresión regular de acuerdo con el número requerido de etiquetas.

^.*\{1\}.*\{2\}.*\{3\}.*$

^.*\{1\}.*\{2\}.*\{3\}.*$

Orden de etiquetas (emparejadas, para segmentos con 3 etiquetas).

Ajuste la expresión regular de acuerdo con el número requerido de etiquetas.

^.*\{1\>.*\<1\}.*\{2\>.*\<2\}.*\{3\>.*\<3\}.*$

^.*\{1\>.*\<1\}.*\{2\>.*\<2\}.*\{3\>.*\<3\}.*$

Espacios antes de las etiquetas

\s(\{[1-9][0-9]*\}|\{[1-9][0-9]*>|<[1-9][0-9]*\}|\{[biu_\^]{1,4}>|<[biu_\^]{1,4}\})

\s(\{[1-9][0-9]*\}|\{[1-9][0-9]*>|<[1-9][0-9]*\}|\{[biu_\^]{1,4}>|<[biu_\^]{1,4}\})

Espacios después de las etiquetas

(\{[1-9][0-9]*\}|\{[1-9][0-9]*>|<[1-9][0-9]*\}|\{[biu_\^]{1,4}>|<[biu_\^]{1,4}\})\s

(\{[1-9][0-9]*\}|\{[1-9][0-9]*>|<[1-9][0-9]*\}|\{[biu_\^]{1,4}>|<[biu_\^]{1,4}\})\s

Sin espacio antes de las etiquetas

\S(\{[1-9][0-9]*\}|\{[1-9][0-9]*>|<[1-9][0-9]*\}|\{[biu_\^]{1,4}>|<[biu_\^]{1,4}\})

\S(\{[1-9][0-9]*\}|\{[1-9][0-9]*>|<[1-9][0-9]*\}|\{[biu_\^]{1,4}>|<[biu_\^]{1,4}\})

Caracteres no espaciales después de etiquetas emparejadas

((\{[1-9][0-9]*>)|(<[1-9][0-9]*\}))\S

((\{[1-9][0-9]*>)|(<[1-9][0-9]*\}))\S

Faltan corchetes cuadrados

[^\[\]]*\[[^\[\]]*\][^\[\]]* 

[^\[\]]*\[[^\[\]]*\][^\[\]]* 

Faltan paréntesis redondos

[^\(\)]*\([^\(\)]*\)[^\(\)]* 

[^\(\)]*\([^\(\)]*\)[^\(\)]* 

Utilice las siguientes expresiones regulares para verificar la misma cantidad de números decimales idénticos, utilizando el separador decimal específico del idioma correspondiente.

(?<;n1>;\d+)\.(?<;n2>;\d+)

(?<;n1>;\d+),(?<;n2>;\d+)

¿Fue útil este artículo?

Sorry about that! In what way was it not helpful?

The article didn’t address my problem.
I couldn’t understand the article.
The feature doesn’t do what I need.
Other reason.

Note that feedback is provided anonymously so we aren't able to reply to questions.
If you'd like to ask a question, submit a request to our Support team.
Thank you for your feedback.