Importar utilidades

Expresión regular (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 carácter que forma un patrón de búsqueda principalmente para usar en la coincidencia de patrones con Strings o coincidencia de cadena. 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 obtener una descripción detallada de regex y una tabla de carácter usados.

Para usar varias regex a la vez, insertar un carácter de tubería | entre ellas.

Regex se puede usar en los campos de filtrar, buscar y Reemplazar en el CAT Editor, en los campos de fuente y meta de la función de buscar contenido, para la función Convertir a etiquetas en configuración de importación de archivos y para personalizar reglas de segmentación. El convertidor y el CAT Desktop Editor usar Java regex, mientras que el CAT Web Editor y la búsqueda en TMS usar el motor Lucene regex.

Consejo

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

Usar 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 expresiones regulares 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 expresiones regulares en el editor de escritorio para funciones de filtrar y Reemplazar:

Ejemplo

Descripción

<[^>]+>

represents <html_tag>

\{[^\}]+\}

representa {variable},

\[[^\]]+\]

representa [variable],

\[\[.+?\]\]

representa [[aa[11]bb]].

\$[^\$]+\$

represents $operator_Name1$.

\d+

representa números. Además, [0-9]+

[A-Za-z0-9]

representa cualquier carácter alfanumérico.

.+\@.+\..+

correo electrónico nombre@dominio.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 espacio en blanco doble

^\d

un dígito al principio del segmento

\w+\s\s\w+

un espacio en blanco doble entre palabras

\s\n

un salto de línea precedido por cualquier carácter de espacio en blanco

\S\n

un salto de línea precedido por cualquier carácter que no sea de espacio en blanco

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

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

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

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

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

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

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

representa el texto entre corchetes {{}}

\([^\)]+\)

representa el texto entre paréntesis ()

\^[^\^]+\^

representa el texto entre marcas ^

\@[^\@]+\@

representa el texto entre marcas @

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

representa el texto entre marcas ^ y ?

\'[^']+\'

representa texto entre apóstrofos ' '

\"[^"]+\"

representa texto entre comillas \"\"

\%[^\%]+\%

representa texto entre símbolos %

\$\{[^}]*\}

representa texto entre ${ y }, p. ej. ${variable}

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

representa una cadena que comienza con $, p. ej. $appName

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

representa texto dentro de comillas dobles después de dos puntos y un espacio, p. ej. valor en la cadena \"clave\": \"valor\"

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

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

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

representa texto después de un signo igual y sin espacio, p. ej. clave=valor

(.*)=

representa texto antes de un signo igual

=(.*)

representa texto después de un signo igual

\/\/\S*

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

</?mrk[^>]*>

representa etiquetas mrk HTML/XML de apertura y cierre, p. ej. <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. ## ErrorMessage ##1## The number must be higher than 0. ##Z##

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

  2. ErrorMessage (\"The number must be higher than 0.\")

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

  3. 'errorMessage' = 'The number must be higher than 0.'

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

  4. errorMessage = \"esto debe ser traducido\"

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

  5. msgstr (\"The number must be higher than 0.\")

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

  6. # Note: This is a note

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

  7. values '126', 'DCeT', 'Text (en)'

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

Importar JSON

Ejemplo de estructura JSON:

{
"list": {
        "id": "1",
        "value": "text 1 for translation."
        },
"text": {
        "id": "2",
        "value": "text 2 for translation."
        },
"menu": {
        "id": "3",
        "value": "text 3 for translation."
         },"array": ["blue","green"],"arrays": [{        "color": "blue",        "title": "BLUE"
         },         {        "color": "green",        "title": "GREEN"         }    ]}
  • para importar cada valor independientemente del nivel, usar: (^|.*/)value

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

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

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

  • para importar el contenido de una matriz JSON que sigue a una clave determinada, usar: (^|.*/)array\\[.*\\]

  • para importar el contenido de una matriz específica de objetos, usar: (^|.*/)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

expresión regular para importar:

  • solo 'traducir A' : texto

  • solo 'traducir C': categories\\[2\\]/texto

  • solo 'traducir D': categories\\[\\d+\\]/contenido[\\1\\]/texto

  • todo el texto: texto|categories\\[\\d+\\]/texto|categories\\[\\d+\\]/contenido[\\d+\\]/texto

Reglas de segmentación

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

Usar expresiones regulares en archivos .SRX es complejo y se recomienda tener conocimientos básicos sobre el uso de expresiones regulares antes de intentar trabajar con ellos.

Las reglas de no ruptura (abreviaturas, etc.) y las reglas de ruptura (final de la oración con un punto, etc.) están en los 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 minúscula.

[\p{N}]

Cualquier tipo de carácter numérico.

\Q ... \E

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

\t

Tabulador

\n

Salto de línea

\u2029

Separador de párrafos

\u200B

Espacio de ancho cero

\u3002

Punto ideográfico

\ufe52

Punto pequeño

\uff0e

Punto de ancho completo

\uff61

Punto ideográfico de ancho medio

\ufe56

Signo de interrogación pequeño

\uff1f

Signo de interrogación de ancho completo

\u203c

Signo de exclamación doble

\u2048

Signo de interrogación y exclamación

\u2762

Adorno de signo de exclamación grueso

\u2763

Adorno de signo de exclamación de corazón grueso

\ufe57

Signo de exclamación pequeño

\uff01

Signo de exclamación de ancho completo

`[\u0080-\uFFFF]+`

Caracteres del rango Unicode \u0080 a \uFFFF

`[\u00a8\u00b9\u00c4]+`

Una o más apariciones de los caracteres Unicode especificados dentro de los corchetes, p. ej. \u00a8 + \u00b9 + \u00c4

Comprobaciones de QA de personalizar comunes

Control de calidad

Regex de fuente

Regex de meta

Números adicionales en la meta

\d 

\d 

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

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

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

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

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

Ajustar 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 que no son espacios en blanco 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

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

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

Faltan paréntesis

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

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

Usar las siguientes expresiones regulares para comprobar el mismo recuento de números decimales idénticos, usando el separador decimal específico del idioma apropiado.

(?<;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.