Utilitários de importação

Regex (TMS)

O conteúdo de toda a Central de Ajuda é traduzido automaticamente de inglês pelo Phrase Language AI.

A expressão regular (abreviada como regex ou regex) é uma sequência de caracteres que forma um padrão de busca, principalmente para uso em correspondência de padrões com strings ou correspondência de strings. A funcionalidade é semelhante a operações de encontrar e substituir com mais complexidade e especificidade ou como um método para excluir conteúdo definido. Veja a entrada da wikipedia para uma descrição detalhada de regex e uma tabela de caracteres utilizados.

Para usar múltiplos regex ao mesmo tempo, insira um caractere de pipeline | entre eles.

Regex pode ser usado nos campos de filtrar, buscar e substituir no editor CAT, nos campos de origem e destino da função de busca por conteúdo, para a função de Converter para tags nas configurações de importação de arquivo e para personalizar regras de segmentação. O conversor e o editor CAT desktop usam Java regex, enquanto o editor CAT web e a busca no TMS usam o mecanismo Lucene regex.

Dica

Chatbots de IA podem ser muito eficazes na geração e verificação de regex.

Use ferramentas como Regex101 para testar regex com diferentes entradas.

Importante

A Phrase suporta Java regex, mas rejeitará expressões regulares complexas para proteger o sistema de sobrecarga. Expressões regulares complexas são aquelas com quantificadores (exceto possessivos) em grupos que contêm outros quantificadores (exceto possessivos).

Exemplos Gerais

Exemplos para converter texto em tags ao importar arquivos e usar regex no editor desktop para funções de filtragem e encontrar e substituir:

Exemplo

Descrição

<[^>]+>

represents <html_tag>

\{[^\}]+\}

representa {variável},

\[[^\]]+\]

representa [variável],

\[\[.+?\]\]

represents [[aa[11]bb]].

\$[^\$]+\$

representa $operator_Name1$.

\d+

representa números. Além disso, [0-9]+

[A-Za-z0-9]

representa qualquer caractere alfanumérico.

.+\@.+\..+

endereço de e-mail nome@domínio.com

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

a data 2018-08-01

\s$

um espaço em branco no final do segmento

^\s

um espaço em branco no início do segmento

\s\s

um espaço em branco duplo

^\d

um dígito no início do segmento

\w+\s\s\w+

um espaço em branco duplo entre palavras

\s\n

uma nova linha precedida por qualquer caractere de espaço em branco

\S\n

uma nova linha precedida por qualquer caractere que não seja espaço em branco

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

converte variáveis php e código html ($svariable['name'] =)

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

converte a chave do campo javascript com espaços adicionais no início da linha ( 'key' :)

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

não traduz {{text here}} '{{text here}} conteúdo e o converte em tags

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

representa texto entre colchetes {{}}

\([^\)]+\)

representa texto entre parênteses ()

\^[^\^]+\^

representa texto entre marcas ^

\@[^\@]+\@

representa texto entre marcas @

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

representa texto entre marcas ^ e ?

\'[^']+\'

representa texto entre apóstrofes ' '

\"[^"]+\"

representa texto entre aspas ""

\%[^\%]+\%

representa texto entre símbolos %

\$\{[^}]*\}

representa texto entre ${ e }, por exemplo, ${variable}

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

representa uma string que começa com $, por exemplo, $appName

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

representa texto dentro de aspas duplas após um dois pontos e espaço, por exemplo, valor na string "chave": "valor"

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

representa texto dentro de aspas simples após um dois pontos e espaço, por exemplo, JohnDoe na string usuário: 'JohnDoe'

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

representa texto após um sinal de igual e sem espaço, por exemplo, chave=valor

(.*)=

representa texto antes de um sinal de igual

=(.*)

representa texto após um sinal de igual

\/\/\S*

representa hyperlinks. Além disso, https:\/\/\S*

</?mrk[^>]*>

representa tags HTML/XML abertas e fechadas mrk, por exemplo, <mrk id="abc"> e </mrk>

TXT Importar

Nota

Como os arquivos TXT no TMS são processados linha por linha, certas expressões regulares que funcionam em outros ambientes podem não funcionar como esperado.

Exemplos de expressões regulares ao importar um texto específico:

  1. ## MensagemDeErro ##1## O número deve ser maior que 0. ##Z##

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

  2. MensagemDeErro ("O número deve ser maior que 0.")

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

  3. 'mensagemDeErro' = 'O número deve ser maior que 0.'

    Para importar texto após o sinal = e entre ' e ', use regex: (?<=\= ').*(?=')

  4. errorMessage = "isto deve ser traduzido"

    Para importar texto após o sinal = e entre 'e' use regex: (?<=\= ").*(?=")

  5. msgstr ("O número deve ser maior que 0.")

    Para importar strings msgstr em arquivos PO monolíngues usando um filtro TXT, use regex: (?<=msgstr ").*(?=")

  6. # Nota: Esta é uma nota

    Para excluir linhas que começam com #, use regex: (^[^#].*)

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

    Para importar apenas texto entre aspas e com (en), como Texto (en)' use regex: (?<=')[^']*\(en\)(?=')

Importação JSON

Exemplo de estrutura JSON:

{
"list": {
        "id": "1",
        "valor": "texto 1 para tradução."
        },
"text": {
        "id": "2",
        "valor": "texto 2 para tradução."
        },
"menu": {
        "id": "3",
        "valor": "texto 3 para tradução."
         },"array": ["blue","green"],"arrays": [{        "color": "blue",        "title": "BLUE"
         },         {        "color": "green",        "title": "GREEN"         }    ]}
  • para importar cada valor independentemente do nível, use: (^|.*/)valor

  • para importar apenas um valor de uma lista, use: lista/valor

  • para importar um valor de uma lista e/ou menu, use o operador | (OU): lista/valor|menu/valor

  • para importar apenas a primeira instância de um valor de um menu, use: menu\[1\]/valor

  • para importar o conteúdo de um array JSON seguindo uma certa chave, use: (^|.*/)array\[.*\]

  • para importar o conteúdo de um array específico de objetos, use: (^|.*/)arrays\[.*\].*

Importação YAML

Exemplo de arquivo YAML:

title: A
texto: traduzir A
categorias:
  title: B
  texto: traduzir B
categorias:
  title: C
  text: translate C
categorias:
  conteúdo:
      title: D
      texto: traduzir D

regex para importação:

  • apenas 'traduzir A' : texto

  • apenas 'traduzir C': categorias\[2\]/texto

  • apenas 'traduzir D': categorias\[\d+\]/conteúdo[\1\]/texto

  • todo o texto: texto|categorias\[\d+\]/texto|categorias\[\d+\]/conteúdo[\d+\]/texto

Regras de Segmentação

Okapi, Java e Unicode são usados para regras de segmentação em arquivos .SRX.

Usar regex em arquivos .SRX é complexo e um conhecimento básico do uso de expressões regulares é recomendado antes de tentar trabalhar com elas.

Regras de Nobreak (Abreviações etc.) e Regras de Quebra (Fim da frase com um ponto, etc) estão nos arquivos .SRX.

Exemplo

Descrição

[\p{C}]

Caractere de controle invisível.

[\p{Z}]

Espaço em branco

[\p{Lu}]

Uma letra maiúscula que tem uma variante minúscula.

[\p{N}]

Qualquer tipo de caractere numérico.

\Q ... \E

Início e fim de uma citação - (\QAprox.\E). Isto é usado para Abreviações.

\t

Tabulador

\n

Nova linha

\u2029

Separador de parágrafo

\u200B

Espaço de largura zero

\u3002

Ponto final ideográfico

\ufe52

Pequeno ponto final

\uff0e

Ponto final em largura total

\uff61

Ponto final ideográfico em meia largura

\ufe56

Pequena interrogação

\uff1f

Interrogação em largura total

\u203c

Duplo ponto de exclamação

\u2048

Ponto de interrogação e exclamação

\u2762

Ornamento de ponto de exclamação pesado

\u2763

Ornamento de ponto de exclamação de coração pesado

\ufe57

Pequeno ponto de exclamação

\uff01

Ponto de exclamação em largura total

`[\u0080-\uFFFF]+`

Caracteres do intervalo Unicode \u0080 a \uFFFF

`[\u00a8\u00b9\u00c4]+`

Uma ou mais ocorrências dos caracteres Unicode especificados dentro dos colchetes, por exemplo, \u00a8 + \u00b9 + \u00c4

Verificações comuns de controle de qualidade personalizadas

Verificação de controle de qualidade

Regex de texto original

Regex de tradução

Números adicionais na tradução

\d 

\d 

Ordem das tags (não emparelhadas, para segmentos com 3 tags).

Ajuste o regex de acordo com o número necessário de tags.

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

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

Ordem das tags (emparelhadas, para segmentos com 3 tags).

Ajuste o regex de acordo com o número necessário de tags.

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

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

Espaços antes das tags

\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}\})

Espaços após as tags

(\{[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

Não há espaço antes das tags

\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 não brancos após tags emparelhadas

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

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

Faltando colchetes quadrados

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

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

Faltando parênteses redondos

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

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

Use as seguintes expressões regulares para verificar a mesma contagem de números decimais idênticos, utilizando o separador decimal específico do idioma.

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

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

Esse artigo foi útil?

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.