Regulární výraz (zkráceně regex nebo regexp) je posloupnost znaků, které tvoří vzor vyhledávání, zejména proto, aby se použily při přiřazování vzorů se Strings nebo přiřazování řetězců. Funkce je podobná jako operace najít a nahradit složitější a specifičtější nebo jako metoda vyloučení definovaného obsahu. Podrobný popis regexpu a tabulka použitých znaků naleznete v položce wikipedie.
Chcete-li použít více regexpů současně, vložte mezi ně znak pipeline |
.
Regexpy lze použít ve filtrovat, vyhledat a nahradit pole v desktopovém editoru CAT, v polích zdroje a cíle funkce Hledat obsah, pro funkci v nastavení importu souborů a pro úpravy pravidel segmentace.
Tip
Chatboti umělé inteligence mohou být velmi efektivní při generování a ověřování regexpu.
Použijte Nástroje jako Regex101 k testování regexpu s různými vstupy.
Důležité
Phrase podporuje Java regexp, ale nevrátí složité regulární výrazy, aby ochránil systém před přetížením. Komplexní regexpy jsou ty s kvantifikátory (kromě přivlastňovacích) ve skupinách, které obsahují jiné kvantifikátory (kromě přivlastňovacích).
Příklady převodu textu na tags při importu souborů a použití regexpu v editor pro funkce vyhledávání a nahradit:
Příklad |
Popis |
---|---|
<[^>]+> |
představuje <html_tag> |
\{[^\}]+\} |
představuje {variable}, |
\[[^\]]+\] |
představuje [proměnnou], |
\[\[.+?\]\] |
představuje [[aa[11]bb]]. |
\$[^\$]+\$ |
představuje $operator_Name1$. |
\d+ |
představuje čísla. Také [0-9]+ |
[A-Za-z0-9] |
představuje libovolný alfanumerický znak. |
.+\@.+\..+ |
e-mail adresa name@domain.com |
\d{4}[-]\d{2}[-]\d{2} |
datum 2018-08-01 |
\s$ |
mezeru na konci segmentu |
^\s |
mezeru na začátku segmentu |
\s\s |
dvojitý bílý znak |
^\d |
číslice na začátku segmentu |
\w+\s\s\w+ |
dvojitou mezeru mezi slovy |
\s\n |
nový řádek před kterým je libovolný znak bílého znaku |
\S\n |
nový řádek před kterým je libovolný znak bez mezer |
<[^>]+>|\$[^=]+= |
převede PHP proměnné a html kód ($svariable['name'] =) |
^\s*\'[^:]+: |
převede polní klíč javascriptu s přidanými mezerami na začátku řádku ( 'klíč' :) |
\{\{[^\}]+\}\}|\'[^']+\' |
nepřeloží obsah {{text here}} '{{text here}} a převede ho na tagy |
\{\{[^\}]+\}\} |
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 v rozmezí ^ až ? značek |
\'[^']+\' |
představuje text mezi ‚‘ apostrofy |
\"[^"]+\" |
představuje text mezi „“ uvozovkami |
\%[^\%]+\% |
představuje text v rozmezí % symbolů |
\$\{[^}]*\} |
představuje text v rozmezí ${ až }, např. ${variable} |
$[a-zA-Z0-9\-_]+ |
představuje řetězec začínající $, např. $appName |
(?<=\: ").*(?=") |
představuje text uvnitř dvojitých uvozovek po dvojtečce a Space, např. |
(?<=\: ').*(?=') |
představuje text v jednoduchých uvozovkách po dvojtečce a Space, např. |
(?<=\=).*(?=) |
představuje text po znaménku rovná se a bez Space, např. klíč=hodnota |
(.*)= |
představuje text před znakem rovná se |
[^=]*$ |
představuje text po znaménku rovná se |
\/\/\S* |
představuje hypertextové odkazy. Také https:\/\/\S* |
</?mrk[^>]*> |
představuje otevřené a uzavřené tagy HTML/XML |
\b[\p{Lu}]+\b |
představuje celá slova velkým písmenem |
Poznámka
Jelikož se soubory TXT v TMS zpracovávají řádek po řádku, nemusejí některé regulární výrazy zakázky v jiném prostředí fungovat podle očekávání.
Příklady regulárních výrazů při importu určitého textu:
-
## ErrorMessage ##1## Číslo musí být vyšší než 0. ##Z##
Pro import textu mezi ##1## a ##Z## ,použijte regulární výraz:
(?<=##1## ).*(?= ##Z##)
-
ErrorMessage ("Číslo musí být vyšší než 0.")
Pro import textu mezi (" a ") použijte regulární výraz:
(?<=\(").*(?="\))
-
'errorMessage' = 'Číslo musí být vyšší než 0.'
Pro import textu po znaménku = a mezi ' a ' použijte regulární výraz:
(?<=\= ').*(?=')
-
errorMessage = „tohle se má přeložit“
Pro import textu po znaménku = a mezi ‚a‘ použijte regulární výraz:
(?<=\= ").*(?=")
-
"Číslo musí být vyšší než 0.")
Pro import msgstr Strings v jednojazyčných souborech Objednávky pomocí filtru TXT použijte regulární výraz:
(?<=msgstr ").*(?=")
-
# Poznámka: Toto je poznámka
Chcete-li vyloučit řádky začínající na # , použijte regulární výraz:
(^[^#].*)
-
hodnoty '126', 'DCeT', 'Text (cs)'
Pro import pouze textu v uvozovkách a s (cs), jako například Text (cs)' použijte regulární výraz:
(?<=')[^']*\(cs\)(?=')
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": „MODRÁ“ }, { "color": "green", "title": "ZELENÁ" } ]}
-
pro import každé hodnoty bez ohledu na úroveň použijte:
(^|.*/)value
-
pro import pouze jedné hodnoty ze seznamu použijte:
seznam/hodnota
-
pro import hodnoty ze seznamu nebo nabídky použijte operátor | (OR):
seznam/hodnota|menu/hodnota
-
pro import pouze první instance hodnoty z nabídky použijte:
menu\[1\]/value
-
pro import obsahu pole JSON následujícího po určitém klíči použijte:
(^|.*/)array\[.*\]
-
k importu obsahu určitého pole objektů použijte:
(^|.*/)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
regexp pro import:
-
pouze ‚přeložit A‘ :
text
-
pouze 'přeložit C':
categories\[2\]/text
-
pouze 'přeložit D':
categories\[\d+\]/content[\1\]/text
-
all text:
text|categories\[\d+\]/text|categories\[\d+\]/content[\d+\]/text
Okapi, Java a Unicode se používají pro pravidla segmentace v souborech .SRX.
Použití regexpu v souborech .SRX je složité a před zakázkou s nimi doporučujeme použít základní znalost regulárních výrazů.
Pravidla bez přerušení (Zkratky apod.) a pravidla bez přerušení (Konec věty s tečkou atd.) jsou v souborech .SRX.
Příklad |
Popis |
---|---|
[\p{C}] |
Neviditelný řídicí znak. |
[\p{Z}] |
Whitespace |
[\p{Lu}] |
Velké písmeno obsahující malé písmeno. |
[\p{N}] |
Jakýkoli druh číselného znaku. |
\Q... \E |
Začátek a konec cenové nabídky - (\QPřibl.\E). Používá se 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 za plnou šířkou |
\uff61 |
Ideografická tečka za polovinou šířky |
\ufe56 |
Malý otazník |
\uff1f |
Otazník v celé šířce |
\u203c |
Dvojitý vykřičník |
\u2048 |
Vykřičník otazníku |
\u2762 |
Těžký ornament s vykřičníkem |
\u2763 |
Těžké srdce vykřičník ornament |
\ufe57 |
Malý vykřičník |
\uff01 |
Vykřičník v celé šířce |
`[\u0080-\uFFFF]+` |
Znaky z rozsahu Unicode \u0080 až \uFFFF |
`[\u00a8\u00b9\u00c4]+` |
Jeden nebo více výskytů zadaných znaků Unicode v hranatých závorkách, např. \u00a8 + \u00b9 + \u00c4 |
Kontrola QA |
Regexp - zdrojový text |
Regexp - cílový text |
---|---|---|
Další čísla v cíli |
|
|
objednávka tags (nepárové, pro segmenty se 3 tags). Upravte regexp podle požadovaného počtu tags. |
|
|
objednávka tags (párové, pro segmenty se 3 tags). Upravte regexp podle požadovaného počtu tags. |
|
|
Mezery před tags |
|
|
Mezery za tags |
|
|
Žádná Space před tags |
|
|
Nebílé znaky po párových tags |
|
|
Chybějící hranaté závorky |
|
|
Chybějící kulaté závorky |
|
|