Regulární výraz (zkráceně regex nebo regex) je posloupnost znaků, které tvoří vyhledávací vzor hlavně pro použití při porovnávání vzorů se Strings nebo porovnávání řetězců. Funkcionalita je podobná operacím najít a Nahradit s větší komplexností a specifičností nebo jako metoda pro vyloučení definovaného obsah. Viz položka wikipedia pro podrobný popis regulárního výrazu a tabulku použitých znaků.
Chcete-li použít více regulárních výrazů najednou, vložte mezi ně znak pipeline |.
Regulární výraz lze použít v polích pro filtrovat, hledat a Nahradit v CAT Editoru, ve zdrojových a cílových polích funkce hledat obsah, pro funkci v nastavení importu souborů a pro přizpůsobení segmentace pravidel. Konvertor a CAT Desktop Editor použít Java regex, zatímco CAT Web Editor a vyhledávání v TMS použít nástroj Lucene regex.
Tip
Chatboti umělá inteligence mohou být při generování a ověřování regulárního výrazu velmi efektivní.
Použijte Nástroje jako Regex101 k testování regulárního výrazu s různými vstupy.
Důležité
Phrase podporuje Java regex, ale bude vracet komplexní regulární výrazy, aby chránil systém před přetížením. Komplexní regulární výrazy jsou ty s kvantifikátory (kromě posesivních) u skupin, které obsahují další kvantifikátory (kromě posesivních).
Příklady pro převod textu na tagy při importu souborů a použití regulárního výrazu v desktopovém editoru pro filtrování a funkce Nahradit a najít:
|
Příklad |
Popis |
|---|---|
|
<[^>]+> |
představuje <html_tag> |
|
\{[^\}]+\} |
představuje {variable}, |
|
\[[^\]]+\] |
představuje [variable], |
|
\[\[.+?\]\] |
představuje [[aa[11]bb]]. |
|
\$[^\$]+\$ |
represents $operator_Name1$. |
|
\d+ |
představuje čísla. Také [0-9]+ |
|
[A-Za-z0-9] |
představuje libovolný alfanumerický znak. |
|
.+\\@.+\\..+ |
e-mailová adresa name@doména.com |
|
\d{4}[-]\d{2}[-]\d{2} |
datum 2018-08-01 |
|
\\s$ |
mezera na konci segmentu |
|
^\s |
mezera na začátku segmentu |
|
\\s\\s |
dvojitá mezera |
|
^\\d |
číslice na začátku segmentu |
|
\w+\s\s\w+ |
dvojitá mezera mezi slovy |
|
\s\n |
nový řádek předcházený libovolným znakem mezery |
|
\S\n |
nový řádek předcházený jakýmkoli znakem, který není Space |
|
<[^>]+>|\$[^=]+= |
převede php proměnné a html kód ($svariable['name'] =) |
|
^\s*\'[^:]+: |
převede javascriptový klíč pole s přidanými Space na začátku řádku ( 'klíč' :) |
|
\{\{[^\}]+\}\}|\'[^']+\' |
nepřekládá {{text here}} '{{text here}} obsah a převede jej na značky |
|
\{\{[^\}]+\}\} |
představuje text mezi závorkami {{}} |
|
\([^\)]+\) |
představuje text mezi závorkami () |
|
\^[^\^]+\^ |
představuje text mezi značkami ^ |
|
\@[^\@]+\@ |
představuje text mezi značkami @ |
|
\^[^\^\?]+\? |
představuje text mezi značkami ^ a ? |
|
\'[^']+\' |
představuje text mezi apostrofy ' ' |
|
\"[^\"]+\" |
představuje text mezi uvozovkami \"\" |
|
\%[^\%]+\% |
představuje text mezi symboly % |
|
\$\{[^}]*\} |
představuje text mezi ${ a }, např. ${variable} |
|
\$[a-zA-Z0-9\-_]+ |
představuje řetězec, který začíná $, např. $appName |
|
(?<=\: ").*(?=") |
představuje text uvnitř dvojitých uvozovek za dvojtečkou a Space, např. |
|
(?<=\\: ').*(?=') |
představuje text uvnitř jednoduchých uvozovek za dvojtečkou a mezerou, např. |
|
(?<=\=).*(?=) |
představuje text za rovnítkem a bez mezery, např. klíč=hodnota |
|
(.*)= |
představuje text před rovnítkem |
|
=(.*) |
představuje text za rovnítkem |
|
\/\/\S* |
představuje hypertextové odkazy. Také, https:\\/\\/\\S* |
|
</?mrk[^>]*> |
představuje HTML/XML otevřené a zavřené |
Poznámka
Jelikož jsou soubory TXT v TMS zpracovávány řádek po řádku, určité regulární výrazy, které fungují v jiných prostředích, nemusí fungovat podle očekávání.
Příklady regulárních výrazů při import konkrétního textu:
-
## ErrorMessage ##1## Číslo musí být vyšší než 0. ##Z##
Pro import textu mezi ##1## a ##Z## ,použít regex:
(?<=##1## ).*(?= ##Z##) -
ErrorMessage (\"Číslo musí být vyšší než 0.\")
Pro import textu mezi (\" a \") , použít regex:
(?<=\\(\").*(?=\"\\)) -
'errorMessage' = 'Číslo musí být vyšší než 0.'
Pro import textu za znakem = a mezi ' a ' , použít regex:
(?<=\\= ').*(?=') -
errorMessage = \"toto má být přeloženo\"
Pro import textu za znakem = a mezi 'a' použít regex:
(?<=\\= \").*(?=\") -
msgstr (\"Číslo musí být vyšší než 0.\")
Pro import Strings msgstr v monolingválních souborech Objednávka pomocí filtru TXT, použít regex:
(?<=msgstr \").*(?=\") -
# Note: Toto je poznámka
Pro Vyloučit řádky začínající # , použít regex:
(^[^#].*) -
values '126', 'DCeT', 'Text (en)'
Pro import pouze text v uvozovkách a s (en), jako je Text (en)' použít regex:
(?<=')[^']*\\(en\\)(?=')
Příklad struktury JSON:
{
"list": {
"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" } ]}
-
pro import každé hodnoty bez ohledu na úroveň, použít:
(^|.*/)value -
pro import pouze jedné hodnoty ze seznamu, použít:
list/value -
pro import hodnoty ze seznamu a/nebo menu, použít operátor | (NEBO):
list/value|menu/value -
pro import pouze prvního výskytu hodnoty z menu, použít:
menu\\[1\\]/value -
pro import obsah JSON pole následujícího po určitém klíči, použít:
(^|.*/)array\\[.*\\] -
pro import obsah konkrétního pole objektů, použít:
(^|.*/)arrays\\[.*\\].*
Příklad souboru 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 pro import:
-
pouze 'translate A' :
text -
pouze 'přeložit C':
categories\\[2\\]/text -
pouze 'přeložit D':
categories\\[\\d+\\]/obsah[\\1\\]/text -
veškerý text:
text|categories\\[\\d+\\]/text|categories\\[\\d+\\]/obsah[\\d+\\]/text
Okapi, Java a Unicode se používají pro pravidla segmentace v souborech .SRX.
Použití regulární výraz v souborech .SRX je složité a před pokusem o zakázka s nimi se doporučuje základní znalost použití regulární výraz.
Pravidla Nobreak (zkratky atd.) a pravidla Break (konec věty s tečkou atd.) jsou v souborech .SRX.
|
Příklad |
Popis |
|---|---|
|
[\p{C}] |
Neviditelný řídicí znak. |
|
[\p{Z}] |
Mezera |
|
[\p{Lu}] |
Velké písmeno, které má malou variantu. |
|
[\p{N}] |
Jakýkoli druh číselného znak. |
|
\\Q ... \\E |
Začátek a konec citace - (\\QApprox.\\E). Toto se používá pro zkratky. |
|
\t |
Tabulátor |
|
\n |
Nový řádek |
|
\u2029 |
Oddělovač odstavců |
|
\u200B |
Space s nulovou šířkou |
|
\u3002 |
Ideografická tečka |
|
\ufe52 |
Malá tečka |
|
\uff0e |
Tečka s plnou šířkou |
|
\uff61 |
Ideografická tečka s poloviční šířkou |
|
\ufe56 |
Malý otazník |
|
\uff1f |
Otazník s plnou šířkou |
|
\u203c |
Dvojitý vykřičník |
|
\u2048 |
Otazník s vykřičníkem |
|
\u2762 |
Ozdobný tučný vykřičník |
|
\u2763 |
Ozdobný tučný vykřičník se srdcem |
|
\ufe57 |
Malý vykřičník |
|
\uff01 |
Vykřičník s plnou šířkou |
|
`[\\u0080-\\uFFFF]+` |
Znaky z rozsahu Unicode \\u0080 až \\uFFFF |
|
`[\u00a8\u00b9\u00c4]+` |
Jeden nebo více výskytů zadaných znaků Unicode uvnitř hranatých závorek, např. \\u00a8 + \\u00b9 + \\u00c4 |
|
Kontrola QA |
Zdrojový regulární výraz |
Cíl regex |
|---|---|---|
|
Další čísla v cíl |
|
|
|
Objednávka tagů (nepárové, pro segmenty se 3 tagy). Upravit regex podle požadovaného počtu tagů. |
|
|
|
Objednávka tagů (párové, pro segmenty se 3 tagy). Upravit regex podle požadovaného počtu tagů. |
|
|
|
Space před tagy |
|
|
|
Space za tagy |
|
|
|
Žádný Space před tagy |
|
|
|
Znaky bez Space za párovými tagy |
|
|
|
Chybějící hranaté závorky |
|
|
|
Chybějící kulaté závorky |
|
|
|
Použít následující regulární výrazy ke kontrole stejného počtu identických desetinných čísel, za použití příslušného jazyk-specifického desetinného oddělovače. |
|
|