Il espressione regolare (abbreviato in regex o regexp) è una sequenza di caratteri che formano un modello di ricerca principalmente per l'uso nella corrispondenza dei modelli con stringhe o stringa-matching. La funzionalità è simile alla ricerca e alla sostituzione di operazioni con maggiore complessità e specificità. Vedere la voce di wikipedia per una descrizione dettagliata di regexp e una tabella di caratteri usati.
A utilizzare più regexp alla volta inserire un carattere pipeline |
tra di loro.
Le regexp possono essere utilizzate nei campi di filtro, ricerca e sostituzione nell'editor desktop CAT, nei campi origine e destinazione della funzione Cerca per contenuto, per la funzione, Converti in tag in File
Importante
Phrase supporta Java regexp, ma rifiutare espressioni regolari complesse per proteggere il sistema dal sovraccarico. Le regexp complesse sono quelle con quantificatori (eccetto possessivi) su gruppi che contengono altri quantificatori (eccetto i possessivi).
Esempi di conversione di testo in tag durante l'importazione di file e l'utilizzo di regexp nell'editor per le funzioni di ricerca e sostituzione:
Esempio |
Descrizione |
---|---|
<[^>]+> |
rappresenta <html_tag> |
\{[^\}]+\} |
rappresenta {variable}, |
\[[^\]]+\] |
rappresenta [variabile], |
\[\[.+?\]\] |
rappresenta [[AA[11]BB]]. |
\$[^\$]+\$ |
rappresenta $operator_Nome1$. |
\d+ |
rappresenta i 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$ |
un spazio vuoto alla fine del segmento |
^\s |
un spazio vuoto all'inizio del segmento |
\s\s |
una doppia spazio vuoto |
^\d |
una cifra all'inizio del segmento |
\w+\s\s\w+ |
un doppio spazio vuoto tra parole |
\s\n |
Una nuova riga preceduta da qualsiasi carattere spazio vuoto |
\S\n |
Una nuova riga preceduta da qualsiasi carattere non spazio vuoto |
<[^>]+>|\$[^=]+= |
Converte il codice PHP variabili e HTML ($svariable['name'] =) |
^\s*\'[^:]+: |
Converte la chiave di campo di JavaScript con aggiunto spazi bianchi all'inizio della riga ( 'chiave' :) |
\{\{[^\}]+\}\}|\'[^']+\' |
non traduce {{text here}} '{{text here}} contenuto e lo converte in tag |
Esempi di espressioni regolari durante l'importazione di un testo specifico:
-
## ErrorMessage ##1## Il numero deve essere maggiore di 0. ##Z##
A importare testo compreso tra ##1## e ##Z## ,usa regexp: (?<=##1## ).*(?= ##Z## ,)
-
ErrorMessage ("Il numero deve essere maggiore di 0.")
A importare testo compreso tra (" e ") , usa regexp:
(?<=\(").*(?="\))
'errorMessage' = 'Il numero deve essere maggiore di 0.'
A importare testo dopo il segno = e tra ' e ' , usa regexp: (?<=\= ').*(?= ') ,
-
errorMessage = "questo deve essere tradotto"
A importare testo dopo il segno = e tra 'e'usare regexp:
(?<=\= ").*(?=")
-
msgstr ("Il numero deve essere maggiore di 0.")
A importare msgstr stringhe in file PO monolingue utilizzando un filtro TXT, utilizzare regexp:
(?<=msgstr ").*(?=")
# Nota: Questa è una nota
A escludere le righe che iniziano con # , utilizzare regexp: (^[^# , ].*)
values '126', 'DCeT', 'Text (en)'
A importare solo testo tra virgolette e con (en), come Text (en)' use regexp: (?<=')[^']*\(en\)(?='),
Esempio di struttura JSON:
{
"list": {
"id": "1",
"value": "testo 1 per la traduzione".
},
"testo": {
"id": "2",
"value": "testo 2 per la traduzione".
},
"menu": {
"id": "3",
"value": "testo 3 per la traduzione".
},"array": ["blue","green"],"arrays": [{ "color": "blue", "title": "BLU"
}, { "color": "green", "title": "VERDE" } ]}
-
Per importare ogni valore indipendentemente dal livello, utilizzare: (^|. */)valore
-
Per importare un solo valore da un elenco, utilizzare: list/value
-
Per importare un valore da un elenco e/o da un menu, utilizzare il comando | (OR) operatore: list/value|menu/value
-
Per importare solo la prima istanza di un valore da un menu, utilizzare: menu\[1\]/value
-
per importare il contenuto di una matrice JSON seguendo una determinata chiave, utilizzare: (^|. */)matrice\[.*\]
-
Per importare la contenuto di una matrice specifico di oggetti, utilizzare: (^|. */)matrici\[.*\].*
Esempio di volo YAML:
titolo: A
testo: tradurre A
Categorie:
titolo: B
testo: tradurre B
Categorie:
titolo: C
testo: tradurre C
Categorie:
contenuto:
titolo: D
testo: tradurre D
regexp per l'importazione:
-
solo 'tradurre A' :
testo
-
only 'translate C':
categories\[2\]/text
-
only 'translate D':
categories\[\d+\]/content[\1\]/text
Tutto il testo: testo|categorie\[\d+\]/testo|categorie\[\d+\]/contenuto[\d+\]/testo
Okapi, Java e Unicode vengono utilizzati per le regole di segmentazione in . SRX.
Utilizzando regexp in . I file SRX sono complessi e si consiglia una conoscenza di base del espressione regolare utilizzo prima di provare a lavoro con essi.
Le regole Nobreak (abbreviazioni, ecc.) e le regole di interruzione (fine della frase con un punto, ecc.) sono in . SRX.
Esempio
Descrizione
[\p{C}]
Carattere di controllo invisibile.
[\p{Z}]
Spazi vuoti
[\p{Lu}]
Lettera maiuscola con una variante minuscola.
[\p{N}]
Qualsiasi tipo di carattere numerico.
\Q ... \E
Inizio e fine di un'offerta - (\QApprox.\E). Questo è usato per le abbreviazioni.
\t
Tabulatore
\n
Newline
\u2029
Separatore di paragrafo
\u200B
Spazio a larghezza zero
\u3002
Punto e punto ideografico
\ufe52
Piccolo punto e basta.
\uff0e
Punto e punto completo a larghezza intera
\uff61
Punto ideografico a mezza 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 del punto esclamativo del cuore pesante
\ufe57
Piccolo punto esclamativo
\uff01
Punto esclamativo a larghezza intera
QA Controllare
Fonte Regexp
Regexp di destinazione
Numeri aggiuntivi in destinazione
\d
\d
Tag ordine (non accoppiati)
^.*\{1\}.*\{2\}.*$
^.*\{1\}.*\{2\}.*$
Tag ordine (non accoppiati)
^.*\{1\}.*\{2\}.*\{3\}.*$
^.*\{1\}.*\{2\}.*\{3\}.*$
Tag ordine (non accoppiati)
^.*\{1\}.*\{2\}.*\{3\}.*\{4\}.*$
^.*\{1\}.*\{2\}.*\{3\}.*\{4\}.*$
Tag ordine (accoppiati)
^.*\{1\>.*\<1\}.*\{2\>.*\<2\}.*$
^.*\{1\>.*\<1\}.*\{2\>.*\<2\}.*$
Tag ordine (accoppiati)
^.*\{1\>.*\<1\}.*\{2\>.*\<2\}.*\{3\>.*\<3\}.*$
^.*\{1\>.*\<1\}.*\{2\>.*\<2\}.*\{3\>.*\<3\}.*$
Spazi prima di 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 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 di 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}\})
Mancante parentesi quadre
[^\[\]]*\[[^\[\]]*\][^\[\]]*
[^\[\]]*\[[^\[\]]*\][^\[\]]*
Mancante parentesi tonde
[^\(\)]*\([^\(\)]*\)[^\(\)]*
[^\(\)]*\([^\(\)]*\)[^\(\)]*