L'espressione regolare (abbreviata in regex o regexp) è una sequenza di caratteri che formano un modello di ricerca principalmente da usare nella corrispondenza di modelli con Strings o stringhe. La funzionalità è simile per trovare e sostituire operazioni con maggiore complessità e specificità o come metodo per escludere contenuti definiti. Vedi la voce wikipedia per una descrizione dettagliata della regexp e una tabella dei caratteri usati.
Per usare più regexp alla volta, inserisci tra di esse un carattere pipeline |
.
Le regexp possono essere utilizzate nei filtri, cerca e sostituisci nel CAT editor desktop, nei campi di origine e destinazione della funzione Cerca contenuto, nella funzione nelle impostazioni Importa file e nella personalizzazione delle regole di segmentazione.
Consiglio
I chatbot IA possono essere molto efficaci nel generare e verificare regexp.
Usa Strumenti come Regex101 per testare regexp con input diversi.
Importante
Phrase supporta la regexp Java, ma rifiuterà espressioni regolari complesse per proteggere il sistema dal sovraccarico. Le regexp complesse sono quelle con quantificatori (eccetto i possessivi) su gruppi che contengono altri quantificatori (eccetto i possessivi).
Esempi di conversione del testo in tags durante l'importazione di file e l'utilizzo di regexp nell'editor per le funzioni di ricerca e sostituzione:
Esempio |
Descrizione |
---|---|
<[^>]+> |
represents <html_tag> |
\{[^\}]+\} |
rappresenta {variabile}, |
\[[^\]]+\] |
rappresenta [variabile], |
\[\[.+?\]\] |
rappresenta [[aa[11]bb]]. |
\$[^\$]+\$ |
represents $operator_Name1$. |
\d+ |
rappresenta numeri. Inoltre, [0-9]+ |
[A-Za-z0-9] |
rappresenta qualsiasi carattere alfanumerico. |
.+\@.+\..+ |
indirizzo e-mail 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 all'inizio del segmento |
\s\s |
un doppio spazio |
^\d |
una cifra all'inizio del segmento |
\w+\s\s\w+ |
un doppio spazio tra le parole |
\s\n |
un ritorno a capo preceduto da qualsiasi carattere spazio |
\S\n |
un ritorno a capo preceduto da qualsiasi carattere diverso dagli spazi |
<[^>]+>|\$[^=]+= |
converte variabili PHP e codice html ($svariable['name'] =) |
^\s*\'[^:]+: |
converte la chiave del campo di javascript con spazi aggiunti all'inizio della riga ("chiave") |
\{\{[^\}]+\}\}|\'[^']+\' |
non traduce il contenuto {{text here}} di {{text here}} e lo converte in tags |
\{\{[^\}]+\}\} |
rappresenta il testo tra {{}} parentesi graffe |
\([^\)]+\) |
rappresenta il testo tra parentesi graffe () |
\^[^\^]+\^ |
rappresenta il testo tra ^ segni |
\@[^\@]+\@ |
rappresenta il testo tra @ segni |
\^[^\^\?]+\? |
rappresenta il testo tra i segni ^ e ? |
\'[^']+\' |
rappresenta il testo tra gli apostrofi "" |
\"[^"]+\" |
rappresenta il testo tra virgolette "" |
\%[^\%]+\% |
rappresenta il testo tra % simboli |
\$\{[^}]*\} |
rappresenta il testo compreso tra ${ e }, ad es. ${variable} |
$[a-zA-Z0-9\-_]+ |
rappresenta una stringa che comincia con $, ad es. $appName |
(?<=\: ").*(?=") |
rappresenta il testo tra virgolette doppie dopo i due punti e lo spazio, ad esempio |
(?<=\: ').*(?=') |
rappresenta il testo tra virgolette singole dopo i due punti e lo spazio, ad es. |
(?<=\=).*(?=) |
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. Also, https:\/\/\S* |
</?mrk[^>]*> |
rappresenta tags |
\b[\p{Lu}]+\b |
rappresenta parole intere in lettere maiuscole |
Nota
Poiché i file TXT in TMS vengono elaborati riga per riga, determinate espressioni regolari che lavorano in altri ambienti potrebbero non funzionare come previsto.
Esempi di espressioni regolari durante l'importazione di un testo specifico:
-
## Messaggio d'errore ##1## Il numero deve essere superiore a 0. ##Z##
Per importare testo tra ##1## e ##Z## , usa regexp:
(?<=##1## ).*(?= ##Z##)
-
ErrorMessage ("Il numero deve essere superiore a 0.")
Per importare testo tra (" e ") , usa regexp:
(?<=\(").*(?="\))
-
'errorMessage' = 'Il numero deve essere superiore a 0.'
Per importare testo dopo il segno = e tra " e ' , usare regexp:
(?<=\= ').*(?=')
-
errorMessage = "questo è da tradurre"
Per importare testo dopo il segno = e tra “e” usare regexp:
(?<=\= ").*(?=")
-
msgstr ("Il numero deve essere superiore a 0.")
Per importare Strings msgstr in file PO monolingue usando un filtro TXT, usare regexp:
(?<=msgstr ").*(?=")
-
# Nota: Questa è una nota
Per escludere righe che iniziano con # , usa regexp:
(^[^#].*)
-
valori '126', 'DCeT', 'Text (en)'
Per importare solo testo tra virgolette e con (en), come Testo (en)' usa regexp:
(?<=')[^']*\(en\)(?=')
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": "VERDE" } ]}
-
per importare ogni valore indipendentemente dal livello, usa:
(^|.*/)value
-
per importare solo un valore da un elenco, usare:
elenco/valore
-
per importare un valore da un elenco e/o menu, usare l’operatore | (OR):
elenco/valore|menu/valore
-
per importare solo la prima istanza di un valore da un menu, usare:
menu\[1\]/value
-
per importare il contenuto di un array JSON seguendo una determinata chiave, usare:
(^|.*/)array\[.*\]
-
per importare il contenuto di un array specifico di oggetti, usare:
(^|.*/)arrays\[.*\].*
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
regexp per l'importazione:
-
solo "traduci A" :
testo
-
solo 'traduci C':
categorie\[2\]/testo
-
solo 'traduci D':
categorie\[\d+\]/content[\1\]/text
-
tutto il testo:
text|categorie\[\d+\]/text|categorie\[\d+\]/content[\d+]/text
Okapi, Java e Unicode sono usati per le regole di segmentazione nei file .SRX.
L'utilizzo di regexp nei file .SRX è complesso ed è consigliabile una conoscenza di base dell'usare delle espressione regolare prima di tentare di lavoro.
Le regole di interruzione (abbreviazioni, ecc.) e le regole di interruzione (fine frase con un punto, ecc.) sono nei file .SRX.
Esempio |
Descrizione |
---|---|
[\p{C}] |
Carattere controllo invisibile. |
[\p{Z}] |
Spazi |
[\p{Lu}] |
Una lettera maiuscola che ha una variante minuscola. |
[\p{N}] |
Qualsiasi tipo di carattere numerico. |
\Q ... \E |
Inizio e fine di un preventivo - (\QApprox.\E). Questo è usato per le abbreviazioni. |
\t |
Tabulator |
\n |
Newline |
\u2029 |
Separatore di paragrafo |
\u200B |
Spazio larghezza zero |
\u3002 |
Punto intero ideografico |
\ufe52 |
Piccolo punto e basta |
\uff0e |
Punto intero a larghezza intera |
\uff61 |
Punto intero ideografico a metà larghezza |
\ufe56 |
Piccolo punto interrogativo |
\uff1f |
Punto interrogativo a larghezza intera |
\u203c |
Doppio punto esclamativo |
\u2048 |
Punto esclamativo della domanda |
\u2762 |
Ornamento pesante del punto esclamativo |
\u2763 |
Ornamento pesante del punto esclamativo del cuore |
\ufe57 |
Piccolo punto esclamativo |
\uff01 |
Punto esclamativo a larghezza intera |
`[\u0080-\uFFFF]+` |
Caratteri dall'intervallo Unicode \u0080 a \uFFFF |
`[\u00a8\u00b9\u00c4]+` |
Una o più occorrenze dei caratteri Unicode specificati tra parentesi quadre, ad es. \u00a8 + \u00b9 + \u00c4 |
Controllo QA |
Origine Regexp |
Destinazione Regexp |
---|---|---|
Numeri aggiuntivi nella destinazione |
|
|
Ordine tags (spaiato, per i segmenti con 3 tags). Regola la regexp in base al numero richiesto di tags. |
|
|
Ordine tags (accoppiato, per i segmenti con 3 tags). Regola la regexp in base al numero richiesto di tags. |
|
|
Spazi prima dei tags |
|
|
Spazi dopo tags |
|
|
Nessuno spazio prima dei tags |
|
|
Caratteri non spazi dopo tags abbinati |
|
|
parentesi quadre mancanti |
|
|
Mancano le parentesi tonde |
|
|