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 caracteres 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 mayor complejidad y especificidad o como un método para excluir contenido definido. Consulte la entrada de wikipedia para obtener una descripción detallada de la expresión regular y una tabla de caracteres usados.

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

Las expresiones regulares se pueden 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 la configuración de importación de archivos y para personalizar las 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 de Lucene regex.

Consejo

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

Usar Herramientas como Regex101 para probar expresiones regulares 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 name@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

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 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 {{text here}} contenido '{{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óstrofes ' '

\"[^"]+\"

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 HTML/XML de apertura y cierre mrk, 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 trabajo 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 (\" and \") , usar regex: (?<=\\(\").*(?=\"\\))

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

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

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

    Para importar texto después del signo = y entre 'and' 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 menu, usar el operador | (O): lista/value|menu/value

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

  • para importar el contenido de una matriz JSON siguiendo 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 un conocimiento básico del 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

Nueva línea

\u2029

Separador de párrafos

\u200B

Espacio de ancho cero

\u3002

Punto final ideográfico

\ufe52

Punto final pequeño

\uff0e

Punto final 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 pesado

\u2763

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

\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 meta

\d 

\d 

Orden de las 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 las 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 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 verificar la misma cantidad de números decimales idénticos, usando el separador decimal apropiado para el idioma.

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