Import nástrojů

Regex (TMS)

Obsah je strojově přeložen z angličtiny s použitím Phrase Language AI.

Regulární výraz (zkráceně regex nebo regexp) je sekvence znaků, která tvoří vyhledávací vzor, hlavně pro použití při porovnávání vzorů s řetězci nebo shodě řetězců. Funkčnost je podobná operacím najít a nahradit s větší složitostí a specifikací nebo jako metoda pro vyloučení definovaného obsahu. Viz položka wikipedia pro podrobný popis regexu a tabulku použitých znaků.

Pro použití více regexů najednou vložte mezi ně znak potrubí |.

Regex může být použit v polích pro filtrování, vyhledávání a nahrazování v CAT editoru, v polích zdroje a cíle funkce vyhledávání obsahu, pro funkci Převést na tagy v Nastavení importu souboru a pro přizpůsobení pravidel segmentace. Konvertor a CAT desktopový editor používají Java regex, zatímco CAT webový editor a vyhledávání v TMS používají Lucene regex nástroj.

Tip

Chatboti umělé inteligence mohou být při generování a ověřování regexu velmi efektivní.

Použijte Nástroje jako Regex101 k testování regexu s různými vstupy.

Důležité

Phrase podporuje Java regex, ale vrátí složité regulární výrazy, aby chránila systém před přetížením. Složené regexy jsou ty, které mají kvantifikátory (kromě přivlastňovacích) na skupinách, které obsahují další kvantifikátory (kromě přivlastňovacích).

Obecné příklady

Příklady pro převod textu na tagy při importu souborů a použití regexu v desktopovém editoru pro filtrování a funkce najít a nahradit:

Příklad

Popis

<[^>]+>

představuje <html_tag>

\{[^\}]+\}

představuje {proměnná},

\[[^\]]+\]

představuje [proměnná],

\[\[.+?\]\]

představuje [[aa[11]bb]].

\$[^\$]+\$

represents $operator_Name1$.

\d+

představuje čísla. Také, [0-9]+

[A-Za-z0-9]

představuje jakýkoli alfanumerický znak.

.+\@.+\..+

e-mailová adresa name@domain.com

\d{4}[-]\d{2}[-]\d{2}

datum 2018-08-01

\s$

bílý znak na konci segmentu

^\s

bílý znak na začátku segmentu

\s\s

dvojitý bílý znak

^\d

číslice na začátku segmentu

\w+\s\s\w+

dvojitý bílý znak mezi slovy

\s\n

nový řádek předcházený jakýmkoli znakem bílé mezery

\S\n

nový řádek předcházený jakýmkoli znakem, který není bílou mezerou

<[^>]+>|\$[^=]+=

převádí php proměnné a html kód ($svariable['name'] =)

^\s*\'[^:]+:

převádí javascriptový klíč pole s přidanými mezerami na začátku řádku ( 'key' :)

\{\{[^\}]+\}\}|\'[^']+\'

nepřekládá {{text here}} '{{text here}} obsah a převádí 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 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á s $, např. $appName

(?<=\: ").*(?=")

reprezentuje text uvnitř dvojitých uvozovek po dvojtečce a mezeře, např. hodnota ve stringu "klíč": "hodnota"

(?<=\: ').*(?=')

reprezentuje text uvnitř jednoduchých uvozovek po dvojtečce a mezeře, např. JohnDoe ve stringu uživatel: 'JohnDoe'

(?<=\=).*(?=)

reprezentuje text po znaménku rovnosti a bez mezery, např. klíč=hodnota

(.*)=

reprezentuje text před znaménkem rovnosti

=(.*)

reprezentuje text po znaménku rovnosti

\/\/\S*

reprezentuje hypertextové odkazy. Také, https:\/\/\S*

</?mrk[^>]*>

reprezentuje HTML/XML otevřené a uzavřené mrk tagy, např. <mrk id="abc"> a </mrk>

TXT import

Poznámka

Jelikož jsou TXT soubory 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 importu konkrétního textu:

  1. ## ChybováZpráva ##1## Číslo musí být vyšší než 0. ##Z##

    Pro import textu mezi ##1## a ##Z##, použijte regex: (?<=##1## ).*(?= ##Z##)

  2. ChybováZpráva ("Číslo musí být vyšší než 0.")

    Pro import textu mezi (" a "), použijte regex: (?<=\(").*(?="\))

  3. 'chybováZpráva' = 'Číslo musí být vyšší než 0.'

    Chcete-li importovat text po znaku = a mezi ' a ', použijte regex: (?<=\= ').*(?=')

  4. errorMessage = "toto má být přeloženo"

    Chcete-li importovat text po znaku = a mezi 'a' použijte regex: (?<=\= ").*(?=")

  5. msgstr ("Číslo musí být vyšší než 0.")

    Chcete-li importovat msgstr řetězce v monolingvních PO souborech pomocí TXT filtru, použijte regex: (?<=msgstr ").*(?=")

  6. # Poznámka: Toto je poznámka

    Chcete-li vyloučit řádky začínající #, použijte regex: (^[^#].*)

  7. hodnoty '126', 'DCeT', 'Text (en)'

    Chcete-li importovat pouze text v uvozovkách a s (en), jako je Text (en)', použijte regex: (?<=')[^']*\(en\)(?=')

JSON Import

Příklad struktury JSON:

{
"seznam": {
        "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 všech hodnot bez ohledu na úroveň, použijte: (^|.*/)value

  • pro import pouze jedné hodnoty ze seznamu, použijte: list/value

  • pro import hodnoty ze seznamu a/nebo menu, použijte operátor | (NEBO): list/value|menu/value

  • pro import pouze první instance hodnoty z menu, použijte: menu\[1\]/value

  • pro import obsahu JSON pole následujícího určitému klíči, použijte: (^|.*/)array\[.*\]

  • pro import obsahu konkrétního pole objektů, použijte: (^|.*/)arrays\[.*\].*

YAML Import

Příklad YAML souboru:

název: A
text: přeložit A
kategorie:
  název: B
  text: přeložit B
kategorie:
  název: C
  text: přeložit C
kategorie:
  obsah:
      název: D
      text: přeložit D

regex pro importování:

  • pouze 'přeložit A' : text

  • pouze 'přeložit C': kategorie\[2\]/text

  • pouze 'přeložit D': kategorie\[\d+\]/obsah[\1\]/text

  • veškerý text: text|kategorie\[\d+\]/text|kategorie\[\d+\]/obsah[\d+\]/text

Pravidla segmentace

Okapi, Java a Unicode se používají pro pravidla segmentace v .SRX souborech.

Použití regexu v .SRX souborech je složité a doporučuje se základní znalost používání regulárních výrazů před pokusem o práci s nimi.

Pravidla bez zlomu (zkratky atd.) a pravidla zlomu (konec věty tečkou atd.) jsou v .SRX souborech.

Příklad

Popis

[\p{C}]

Neviditelný ovládací znak.

[\p{Z}]

Bílý znak

[\p{Lu}]

Velké písmeno, které má variantu malého písmena.

[\p{N}]

Jakýkoli typ číselného znaku.

\Q ... \E

Začátek a konec citace - (\QPřibl.\E). Toto se používá pro zkratky.

\t

Tabulátor

\n

Nový řádek

\u2029

Oddělovač odstavců

\u200B

Nulová šířka

\u3002

Ideografická tečka

\ufe52

Malá tečka

\uff0e

Tečka s plnou šířkou

\uff61

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 vykřičník

\u2762

Těžký ornament vykřičníku

\u2763

Těžký ornament vykřičníku ve tvaru srdce

\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]+`

Jedna nebo více výskytů specifikovaných Unicode znaků uvnitř hranatých závorek, např. \u00a8 + \u00b9 + \u00c4

Běžné vlastní kontroly QA

Kontrola QA

Regex zdroje

Regex cíle

Další čísla v cíli

\d 

\d 

Pořadí tagů (nepárované, pro segmenty se 3 tagy).

Upravte regex podle požadovaného počtu tagů.

^.*\{1\}.*\{2\}.*\{3\}.*$

^.*\{1\}.*\{2\}.*\{3\}.*$

Pořadí tagů (párované, pro segmenty se 3 tagy).

Upravte regex podle požadovaného počtu tagů.

^.*\\{1\\>.*\\<1\\}.*\\{2\\>.*\\<2\\}.*\\{3\\>.*\\<3\\}.*$

^.*\\{1\\>.*\\<1\\}.*\\{2\\>.*\\<2\\}.*\\{3\\>.*\\<3\\}.*$

Mezery před tagy

\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}\})

Mezery za tagy

(\{[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

Žádná mezera před tagy

\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}\})

Znaky, které nejsou bílými znaky, po párovaných tagách

((\{[1-9][0-9]*>)|(<[1-9][0-9]*\}))\S

((\{[1-9][0-9]*>)|(<[1-9][0-9]*\}))\S

Chybějící hranaté závorky

[^\[\]]*\[[^\[\]]*\][^\[\]]* 

[^\[\]]*\[[^\[\]]*\][^\[\]]* 

Chybějící kulaté závorky

[^\(\)]*\([^\(\)]*\)[^\(\)]* 

[^\(\)]*\([^\(\)]*\)[^\(\)]* 

Použijte následující regulární výrazy k ověření stejného počtu identických desetinných čísel, s použitím vhodného jazykového desetinného oddělovače.

(?<;n1>;\d+)\.(?<;n2>;\d+)

(?<;n1>;\d+),(?<;n2>;\d+)

Byl pro vás tento článek užitečný?

Sorry about that! In what way was it not helpful?

The article didn’t address my problem.
I couldn’t understand the article.
The feature doesn’t do what I need.
Other reason.

Note that feedback is provided anonymously so we aren't able to reply to questions.
If you'd like to ask a question, submit a request to our Support team.
Thank you for your feedback.