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 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 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 |
|
(?<=\: ').*(?=') |
rappresenta il testo tra virgolette singole dopo un due punti e uno spazio, ad esempio |
|
(?<=\=).*(?=) |
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 |
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:
-
## MessaggioErrore ##1## Il numero deve essere maggiore di 0. ##Z##
Per importare il testo tra ##1## e ##Z##, usa regex:
(?<=##1## ).*(?= ##Z##) -
MessaggioErrore ("Il numero deve essere maggiore di 0.")
Per importare il testo tra (" e "), usa regex:
(?<=\(").*(?="\)) -
'messaggioErrore' = 'Il numero deve essere maggiore di 0.'
Per importare il testo dopo il segno = e tra ' e ', usa regex:
(?<=\= ').*(?=') -
messaggioErrore = "questo deve essere tradotto"
Per importare il testo dopo il segno = e tra 'e' usa regex:
(?<=\= ").*(?=") -
msgstr ("Il numero deve essere maggiore di 0.")
Per importare le stringhe msgstr in file PO monolingue utilizzando un filtro TXT, usa regex:
(?<=msgstr ").*(?=") -
# Nota: Questa è una nota
Per escludere le righe che iniziano con #, usa regex:
(^[^#].*) -
valori '126', 'DCeT', 'Testo (it)'
Per importare solo il testo tra virgolette e con (it), come Testo (it)' usa regex:
(?<=')[^']*\(it\)(?=')
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\[.*\].*
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
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 |
|
Controllo QA |
Regex di origine |
Regex di destinazione |
|---|---|---|
|
Numeri aggiuntivi nella destinazione |
|
|
|
Ordine dei tag (non abbinati, per segmenti con 3 tag). Regola il regex in base al numero richiesto di tag. |
|
|
|
Ordine dei tag (abbinati, per segmenti con 3 tag). Regola il regex in base al numero richiesto di tag. |
|
|
|
Spazi prima dei tag |
|
|
|
Spazi dopo i tag |
|
|
|
Nessuno spazio prima dei tag |
|
|
|
Caratteri non bianchi dopo i tag abbinati |
|
|
|
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. |
|
|