La expresión regular (abreviada como regex o regexp) es una secuencia de caracteres que forman un patrón de búsqueda principalmente para usar en concordancia de patrones con Strings o concordancia de cadenas. Las funciones son similares a encontrar y reemplazar operaciones con mayor complejidad y especificidad o como método para excluir contenidos definidos. Ver la entrada de Wikipedia para una descripción detallada de regexp y una tabla de caracteres usados.
Para usar varias regexps a la vez, inserta un carácter pipeline |
entre ellas.
Las Regex pueden utilizarse para filtrar, buscar y reemplazar en el editor de escritorio CAT, en los campos fuente y meta de la función Buscar contenido, para la función en configuración Importar archivos y para personalizar las reglas de segmentación.
Consejo
Los chatbots IA pueden ser muy eficaces a la hora de generar y verificar regexp.
Usa Herramientas como Regex101 para probar regexp con diferentes entradas.
Importante
phrase admite regexp Java, pero rechazará expresiones regulares complejas para proteger el sistema de sobrecargas. Las regexps complejas son aquellas con cuantificadores (excepto posesivos) en grupos que contienen otros cuantificadores (excepto posesivos).
Ejemplos para convertir texto en tags al importar archivos y usar regexp en el editor para buscar y reemplazar funciones:
Ejemplo |
Descripción |
---|---|
<[^>]+> |
represents <html_tag> |
\{[^\}]+\} |
representa {variable}, |
\[[^\]]+\] |
representa [variable], |
\[\[.+?\]\] |
representa [[aa[11]bb]]. |
\$[^\$]+\$ |
representa $operator_Name1$. |
\d+ |
representa números. Además, [0-9]+ |
[A-Za-z0-9] |
representa cualquier carácter alfanumérico. |
.+\@.+\..+ |
dirección 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 doble espacio en blanco entre palabras |
\s\n |
una nueva línea precedida de cualquier carácter de espacio en blanco |
\S\n |
una nueva línea precedida de cualquier carácter que no sea de espacios en blanco |
<[^>]+>|\$[^=]+= |
convierte variables PHP y código HTML ($svariable['name'] =) |
^\s*\'[^:]+: |
convierte la clave de campo de javascript con espacios en blanco agregados al principio de la línea ( 'clave' :) |
\{\{[^\}]+\}\}|\'[^']+\' |
no traduce el contenido {{text here}} '{{text here}} y lo convierte en tags |
\{\{[^\}]+\}\} |
representa texto entre {{}} llaves |
\([^\)]+\) |
representa texto entre () llaves |
\^[^\^]+\^ |
representa texto intermedio ^ marcas |
\@[^\@]+\@ |
representa texto entre las marcas @ |
\^[^\^\?]+\? |
representa texto entre las marcas ^ y ? |
\'[^']+\' |
representa texto intermedio ' ' apóstrofes |
\"[^"]+\" |
representa el 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 el texto entre comillas dobles después de un punto y espacio, p. ej., |
(?<=\: ').*(?=') |
representa el texto dentro de comillas simples después de un punto y espacio, por ejemplo, |
(?<=\=).*(?=) |
representa el texto después de un signo igual y sin espacio, p. ej. clave=valor |
(.*)= |
representa el texto antes de un signo igual |
[^=]*$ |
representa el texto después de un signo igual |
\/\/\S* |
representa hipervínculos. Also, https:\/\/\S* |
</?mrk[^>]*> |
representa tags |
\b[\p{Lu}]+\b |
representa palabras enteras en mayúsculas |
Nota
Dado que los archivos TXT en TMS se procesan línea por línea, es posible que ciertas expresiones regulares que trabajo en otros entornos no funcionen como se esperaba.
Ejemplos de expresiones regulares al importar un texto específico:
-
## Mensaje de error ##1## El número debe ser mayor que 0. ##Z##
Para importar texto entre ##1## y ###Z## , use regexp:
(?<=##1## ).*(?= ##Z##)
-
Mensaje de error ("El número debe ser superior a 0.")
Para importar texto entre (" y ") , usa regexp:
(?<=\(").*(?="\)
-
'mensaje de error' = 'El número debe ser superior a 0.'
Para importar texto después del signo = y entre ' y ' , use regexp:
(?<=\= ').*(?=')
-
errorMessage = "Esto se va a traducir"
Para importar texto después del signo = y entre 'y' use regexp:
(?<=\= ").* (?=")
-
msgstr ("El número debe ser superior a 0.")
Para importar Strings msgstr en archivos PO monolingües usando un filtrado TXT, use regexp:
(?<=msgstr").*(?=")
-
# Nota: Esta es una nota
Para excluir líneas que empiecen con # , use regexp:
(^[^#].*)
-
valores «126», «DCeT», «Texto (en)»
Para importar solo texto entre comillas y con (en), como Texto (en)' usa regexp:
(?<=')[^']*\(en\)(?=')
Ejemplo de estructura JSON:
{ "lista": { "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": "AZUL" }, { "color": "green", "title": "VERDE" } ]}
-
para importar todos los valores independientemente del nivel, use:
(^|.*/)value
-
para importar solo un valor de una lista, usar:
lista o valor
-
para importar un valor de una lista o menú, usar el operador | (OR):
lista/valor|menú/valor
-
para importar solo la primera instancia de un valor desde un menú, use:
menú\[1\]/value
-
para importar el contenido de una matriz JSON que sigue a una determinada clave, use:
(^|.*/)array\[.*\]
-
para importar el contenido de una matriz específica de objetos, use:
(^|.*/)arrays\[.*\].*
Ejemplo de archivo YAML:
título: A text: translate A categories: título: B text: translate B categories: título: C text: translate C categories: content: título: D text: translate D
regexp 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:
text|categorías\[\d+\]/text|categorías\[\d+\]/content[\d+\]/text
Se usan Okapi, Java y Unicode para reglas de segmentación en archivos .SRX.
El uso de regexp en archivos .SRX es complejo y se recomienda un conocimiento básico de expresión regular usar antes de intentar trabajar con ellos.
Las reglas de nobreak (abreviaturas, etc.) y las reglas de break (final de la frase con un punto, etc.) se encuentran en archivos .SRX.
Ejemplo |
Descripción |
---|---|
[\p{C}] |
Carácter invisible de control. |
[\p{Z}] |
Espacio en blanco |
[\p{Lu}] |
Una letra en 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 cotización - (\QApprox.\E). Esto se utiliza para abreviaturas. |
\t |
Tabulador |
\n |
Newline |
\u2029 |
Separador de párrafos |
\u200B |
Espacio de ancho cero |
\u3002 |
Punto final ideográfico |
\ufe52 |
Pequeño punto completo |
\uff0e |
Punto completo de ancho completo |
\uff61 |
Punto completo ideográfico de ancho medio |
\ufe56 |
Pequeño signo de interrogación |
\uff1f |
Signo de interrogación de ancho completo |
\u203c |
Signo de exclamación doble |
\u2048 |
Signo de exclamación de interrogación |
\u2762 |
Adorno de fuerte signo de exclamación |
\u2763 |
Adorno pesado del signo de exclamación del corazón |
\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 apariciones de los caracteres Unicode especificados dentro de los corchetes, p. ej., \u00a8 + \u00b9 + \u00c4 |
Control de calidad |
Regexp fuente |
Regexp meta |
---|---|---|
Números adicionales en meta |
|
|
Tags orden (no emparejados, para segmentos con 3 tags). Ajusta la regexp según el número requerido de tags. |
|
|
Tags orden (pareados, para segmentos con 3 tags). Ajusta la regexp según el número requerido de tags. |
|
|
Espacios antes tags |
|
|
Espacios después tags |
|
|
Sin espacio antes de tags |
|
|
Caracteres que no son espacios en blanco después de tags pareados |
|
|
Faltan corchetes |
|
|
Faltan llaves redondas |
|
|