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 posloupnost znaků, která tvoří vyhledávací vzor, hlavně pro použití při porovnávání vzorů s řetězci nebo při porovnávání řetězců. Funkcionalita je podobná operacím najít a Nahradit s větší složitostí a specifičností nebo jako metoda pro vyloučení definovaného obsahu. 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 roury |.

Regulární výraz lze použít v polích pro filtrování, vyhledávání a Nahradit v CAT Editoru, ve zdrojových a cílových polích funkce vyhledávání obsahu, pro funkci převést na tagy v nastavení importu souborů a pro přizpůsobení pravidel segmentace. Převodník a CAT Desktop Editor používají Java regex, zatímco CAT Web Editor a vyhledávání v TMS používají 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 složité regulární výrazy vrátí, aby chránil systém před přetížením. Složité regulární výrazy jsou ty s kvantifikátory (kromě posesivních) u skupin, které obsahují další kvantifikátory (kromě posesivních).

Obecné příklady

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:

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 jakýkoli 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ý jakýmkoli znakem mezery

\S\n

nový řádek předcházený jakýmkoli znakem, který není Space

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

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

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

převede klíč pole javascriptu s přidanými Space na začátku řádku ( 'klíč' :)

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

nepřekládá obsah {{text here}} '{{text here}} 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ř. value v řetězci \"klíč\": \"value\"

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

představuje text v jednoduchých uvozovkách za dvojtečkou a mezerou, např. JohnDoe v řetězec uživatel: 'JohnDoe'

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

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é mrk značky, např. <mrk id=\"abc\"> a </mrk>

TXT import

Poznámka

Protože se soubory TXT v TMS zpracovávají řádek po řádku, některé 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 textu:

  1. ## ErrorMessage ##1## Číslo musí být vyšší než 0. ##Z##

    Pro import text mezi ##1## a ##Z## ,použít regex: (?<=##1## ).*(?= ##Z##)

  2. ErrorMessage (\"Číslo musí být vyšší než 0.\")

    Pro import text mezi (\" a \") , použít regex: (?<=\\(\").*(?=\"\\))

  3. 'errorMessage' = 'Číslo musí být vyšší než 0.'

    Pro import text za znaménkem = a mezi ' a ' , použít regex: (?<=\\= ').*(?=')

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

    Pro import text za znaménkem = a mezi 'a' použít regex: (?<=\\= \").*(?=\")

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

    Pro import Strings msgstr v monolingválních souborech Objednávka pomocí filtru TXT použijte regex: (?<=msgstr \").*(?=\")

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

    Pro Vyloučit řádky začínající # , použijte regex: (^[^#].*)

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

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

Import JSON

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 každé hodnoty 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ího výskytu hodnoty z menu použijte: menu\\[1\\]/value

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

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

Import YAML

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': 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 souborech .SRX.

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

Pravidla pro nezalamování (zkratky atd.) a pravidla pro zalamování (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 znaku.

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

Běžné vlastní QA kontroly

Kontrola QA

Zdrojový regulární výraz

Cíl regex

Další čísla v cíl

\d 

\d 

Objednávka tagů (nepárové, pro segmenty se 3 tagy).

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

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

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

Objednávka tagů (párové, pro segmenty se 3 tagy).

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

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

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

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

Space 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ý Space 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 bez mezer za párovými tagy

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

(?<;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.