Utilità di importazione

Regex (TMS)

Contenuti tradotti automaticamente dall'inglese con Phrase Language AI.

L'espressione regolare (abbreviata in regex o regex) è una sequenza di caratteri che forma un modello di ricerca principalmente per l'uso nel matching di pattern con stringhe o nel matching di stringhe. La funzionalità è simile alle operazioni di trova e sostituisci con maggiore complessità e specificità o come metodo per escludere contenuti definiti. Vedi la voce wikipedia per una descrizione dettagliata di regex e una tabella dei caratteri utilizzati.

Per usare più regex contemporaneamente, inserisci un carattere pipeline | tra di esse.

Regex può essere utilizzato nei campi filtrare, cercare e sostituire nell'editor CAT, nei campi sorgente e destinazione della funzione cerca contenuto, per la funzione Converti in tag nelle impostazioni di importazione file e per personalizzare le regole di segmentazione. Il convertitore e l'editor desktop CAT usano Java regex, mentre l'editor web CAT e la ricerca in TMS usano il motore Lucene regex.

Consiglio

I chatbot IA possono essere molto efficaci nella generazione e verifica di regex.

Usa strumenti come Regex101 per testare regex con diversi input.

Importante

Phrase supporta Java regex, ma rifiuterà espressioni regolari complesse per proteggere il sistema da sovraccarichi. Le regex complesse sono quelle con quantificatori (eccetto i possessivi) su gruppi che contengono altri quantificatori (eccetto i possessivi).

Esempi Generali

Esempi per convertire testo in tag durante l'importazione di file e utilizzare regex nell'editor desktop per funzioni di filtraggio e trova e sostituisci:

Esempio

Descrizione

<[^>]+>

rappresenta <html_tag>

\{[^\}]+\}

rappresenta {variabile},

\[[^\]]+\]

rappresenta [variabile],

\[\[.+?\]\]

rappresenta [[aa[11]bb]].

\$[^\$]+\$

represents $operator_Name1$.

\d+

rappresenta numeri. Also, [0-9]+

[A-Za-z0-9]

rappresenta qualsiasi carattere alfanumerico.

.+\@.+\..+

email address name@domain.com

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

la data 2018-08-01

\s$

uno spazio bianco alla fine del segmento

^\s

uno spazio bianco all'inizio del segmento

\s\s

uno spazio bianco doppio

^\d

una cifra all'inizio del segmento

\w+\s\s\w+

uno spazio bianco doppio tra le parole

\s\n

una nuova riga preceduta da qualsiasi carattere bianco

\S\n

una nuova riga preceduta da qualsiasi carattere non bianco

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

converte le variabili php e il codice html ($svariable['name'] =)

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

converte la chiave del campo javascript con spazi bianchi aggiunti all'inizio della riga ( 'key' :)

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

non traduce {{text here}} '{{text here}} contenuto e lo converte in tag

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

rappresenta il testo tra parentesi graffe {{}}

\([^\)]+\)

rappresenta il testo tra parentesi ()

\^[^\^]+\^

rappresenta il testo tra i segni ^

\@[^\@]+\@

rappresenta il testo tra i segni @

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

rappresenta il testo tra i segni ^ e ?

\'[^']+\'

rappresenta il testo tra gli apostrofi ' '

\"[^"]+\"

rappresenta il testo tra le virgolette ""

\%[^\%]+\%

rappresenta il testo tra i simboli %

\$\{[^}]*\}

rappresenta il testo tra ${ e }, ad esempio ${variabile}

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

rappresenta una stringa che inizia con $, ad esempio $nomeApp

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

rappresenta il testo tra virgolette doppie dopo un due punti e uno spazio, ad esempio valore nella stringa "chiave": "valore"

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

rappresenta il testo tra virgolette singole dopo un due punti e uno spazio, ad esempio JohnDoe nella stringa utente: 'JohnDoe'

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

rappresenta il testo dopo un segno di uguale e senza spazio, ad esempio chiave=valore

(.*)=

rappresenta il testo prima di un segno di uguale

=(.*)

rappresenta il testo dopo un segno di uguale

\/\/\S*

rappresenta collegamenti ipertestuali. Inoltre, https:\/\/\S*

</?mrk[^>]*>

rappresenta i tag HTML/XML aperti e chiusi mrk, ad esempio <mrk id="abc"> e </mrk>

TXT Import

Nota

Poiché i file TXT in TMS vengono elaborati riga per riga, alcune espressioni regolari che funzionano in altri ambienti potrebbero non funzionare come previsto.

Esempi di espressioni regolari durante l'importazione di un testo specifico:

  1. ## MessaggioErrore ##1## Il numero deve essere maggiore di 0. ##Z##

    Per importare il testo tra ##1## e ##Z##, usa regex: (?<=##1## ).*(?= ##Z##)

  2. MessaggioErrore ("Il numero deve essere maggiore di 0.")

    Per importare il testo tra (" e "), usa regex: (?<=\(").*(?="\))

  3. 'messaggioErrore' = 'Il numero deve essere maggiore di 0.'

    Per importare il testo dopo il segno = e tra ' e ', usa regex: (?<=\= ').*(?=')

  4. messaggioErrore = "questo deve essere tradotto"

    Per importare il testo dopo il segno = e tra 'e' usa regex: (?<=\= ").*(?=")

  5. msgstr ("Il numero deve essere maggiore di 0.")

    Per importare le stringhe msgstr in file PO monolingue utilizzando un filtro TXT, usa regex: (?<=msgstr ").*(?=")

  6. # Nota: Questa è una nota

    Per escludere le righe che iniziano con #, usa regex: (^[^#].*)

  7. valori '126', 'DCeT', 'Testo (it)'

    Per importare solo il testo tra virgolette e con (it), come Testo (it)' usa regex: (?<=')[^']*\(it\)(?=')

Importazione JSON

Esempio di struttura JSON:

{
"elenco": {
        "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"         }    ]}
  • per importare ogni valore indipendentemente dal livello, usa: (^|.*/)value

  • per importare solo un valore da un elenco, usa: list/value

  • per importare un valore da un elenco e/o menu, usa l'operatore | (OR): list/value|menu/value

  • per importare solo la prima istanza di un valore da un menu, usa: menu\[1\]/value

  • per importare il contenuto di un array JSON seguendo una certa chiave, usa: (^|.*/)array\[.*\]

  • per importare il contenuto di un array specifico di oggetti, usa: (^|.*/)arrays\[.*\].*

Importazione YAML

Esempio di file 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 per importare:

  • solo 'translate A' : text

  • solo 'translate C': categories\[2\]/text

  • solo 'translate D': categories\[\d+\]/content[\1\]/text

  • tutto il testo: text|categories\[\d+\]/text|categories\[\d+\]/content[\d+\]/text

Regole di Segmentazione

Okapi, Java e Unicode sono utilizzati per le regole di segmentazione nei file .SRX.

Usare regex nei file .SRX è complesso e si consiglia una conoscenza di base dell'uso delle espressioni regolari prima di tentare di lavorarci.

Le regole Nobreak (Abbreviazioni ecc.) e le regole Break (Fine della frase con un punto, ecc) sono nei file .SRX.

Esempio

Descrizione

[\p{C}]

Carattere di controllo invisibile.

[\p{Z}]

Spazio bianco

[\p{Lu}]

Una lettera maiuscola che ha una variante minuscola.

[\p{N}]

Qualsiasi tipo di carattere numerico.

\Q ... \E

Inizio e fine di una citazione - (\QApprox.\E). Questo è usato per le abbreviazioni.

\t

Tabulatore

\n

Newline

\u2029

Separatore di paragrafo

\u200B

Spazio a larghezza zero

\u3002

Punto ideografico

\ufe52

Punto piccolo

\uff0e

Punto a larghezza piena

\uff61

Punto finale ideografico a larghezza ridotta

\ufe56

Piccolo punto interrogativo

\uff1f

Punto interrogativo a larghezza piena

\u203c

Doppio punto esclamativo

\u2048

Punto esclamativo interrogativo

\u2762

Ornamento di punto esclamativo pesante

\u2763

Ornamento di punto esclamativo a forma di cuore pesante

\ufe57

Piccolo punto esclamativo

\uff01

Punto esclamativo a larghezza piena

`[\u0080-\uFFFF]+`

Caratteri dell'intervallo Unicode \u0080 a \uFFFF

`[\u00a8\u00b9\u00c4]+`

Una o più occorrenze dei caratteri Unicode specificati all'interno delle parentesi quadre, ad es. \u00a8 + \u00b9 + \u00c4

Controlli QA personalizzati comuni

Controllo QA

Regex di origine

Regex di destinazione

Numeri aggiuntivi nella destinazione

\d 

\d 

Ordine dei tag (non abbinati, per segmenti con 3 tag).

Regola il regex in base al numero richiesto di tag.

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

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

Ordine dei tag (abbinati, per segmenti con 3 tag).

Regola il regex in base al numero richiesto di tag.

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

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

Spazi prima dei tag

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

Spazi dopo i tag

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

Nessuno spazio prima dei tag

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

Caratteri non bianchi dopo i tag abbinati

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

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

Mancanza di parentesi quadre

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

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

Mancanza di parentesi tonde

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

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

Usa le seguenti espressioni regolari per controllare lo stesso conteggio di numeri decimali identici, utilizzando il separatore decimale specifico per la lingua.

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

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

Questo articolo ti è stato utile?

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.