インポートユーティリティ

正規表現 (TMS)

本コンテンツはPhrase Language AIの機械翻訳により、英語から翻訳されています。

正規表現(regexまたはregexpと略される)は、主にStringsのパターンマッチングや文字列マッチングで使用される検索パターンを形成する文字のシーケンスです。機能は検索と置換操作と似ていますが、より複雑で具体的であり、定義されたコンテンツを除外する方法としても使用されます。正規表現の詳細な説明と使用される文字の表については、wikipediaエントリーを参照してください。

複数の正規表現を一度に使用するには、それらの間にパイプライン文字|を挿入します。

正規表現は、CAT Editorのフィルタ、検索、置換フィールドコンテンツ検索機能の原文および訳文フィールド、ファイルインポート設定タグに変換機能、およびセグメンテーションルールのカスタマイズで使用できます。コンバータとCAT Desktop EditorはJava正規表現を使用し、CAT Web EditorとTMSでの検索はLucene正規表現エンジンを使用します。

ヒント

AIチャットボットは、正規表現の生成と検証に非常に効果的です。

Regex101のようなツールを使用して、さまざまな入力で正規表現をテストしてください。

注意

PhraseはJava正規表現をサポートしていますが、システムを過負荷から保護するため、複雑な正規表現は拒否されます。複雑な正規表現とは、他の量指定子(所有限定子を除く)を含むグループに対して量指定子(所有限定子を除く)が設定されているものです。

一般的な例

ファイルのインポート時にテキストをタグに変換する例、およびデスクトップエディタでフィルタリングや検索と置換機能に正規表現を使用する例:

たとえば

項目

<[^>]+>

represents <html_tag>

\{[^\}]+\}

は{variable}を表します、

\[[^\]]+\]

は[variable]を表します、

\[\[.+?\]\]

は[[aa[11]bb]]を表します。

\$[^\$]+\$

$operator_Name1$ を表します。

\d+

数値を表します。また、[0-9]+

[A-Za-z0-9]

任意の英数字を表します。

.+\@.+\..+

email address name@domain.com

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

日付 2018-08-01

\s$

セグメントの末尾にある空白文字

^\s

セグメントの先頭にある空白文字

\s\s

二重の空白文字

^\d

セグメントの先頭にある数字

\w+\s\s\w+

単語間の二重の空白文字

\s\n

任意の空白文字の前の改行

\S\n

任意の非空白文字の前の改行

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

php 変数と html コード ($svariable['name'] =) を変換します

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

行の先頭に空白が追加された javascript のフィールドキー ('key' :) を変換します

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

{{text here}} '{{text here}} コンテンツを翻訳せず、タグに変換します

\{\{[^\}]+\}\}

{{}} ブラケットの間のテキストを表します

\([^\)]+\)

() ブラケットの間のテキストを表します

\^[^\^]+\^

^ マークの間のテキストを表します

\@[^\@]+\@

@ マークの間のテキストを表します

\^[^\^\?]+\?

^ と ? マークの間のテキストを表します

\'[^']+\'

' ' アポストロフィで囲まれた文字列を表します

\"[^"]+\"

\"\" 引用符で囲まれた文字列を表します

\%[^\%]+\%

% 記号で囲まれた文字列を表します

\$\{[^}]*\}

${ と }, で囲まれた文字列を表します。例: ${変数}

\$[a-zA-Z0-9\-_]+

$ で始まる文字列を表します。例: $appName

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

コロンとスペースの後の二重引用符内の文字列を表します。例: \"キー\": \"文字列\" 内の 文字列

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

コロンとスペースの後の単一引用符内の文字列を表します。例: ユーザー: 'JohnDoe' 内の JohnDoe

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

等号の後のスペースなしの文字列を表します。例: キー=文字列

(.*)=

等号の前の文字列を表します

=(.*)

等号の後の文字列を表します

\/\/\S*

ハイパーリンクを表します。また、https:\/\/\\S*

</?mrk[^>]*>

HTML/XML の開始タグと終了タグ mrk を表します(例: <mrk id=\"abc\"> および </mrk>)。

TXT インポート

備考

TMS 内の TXT ファイルは行ごとに処理されるため、他の環境で機能する特定の正規表現が期待どおりに機能しない場合があります。

特定のテキストをインポートする際の正規表現の例:

  1. ## ErrorMessage ##1## The number must be higher than 0. ##Z##

    ##1####Z## の間のテキストをインポートするには、正規表現 (?<=##1## ).*(?= ##Z##) を使用します。

  2. ErrorMessage (\"The number must be higher than 0.\")

    (\" and \") の間のテキストをインポートするには、正規表現 (?<=\\(\").*(?=\"\\)) を使用します。

  3. 'errorMessage' = 'The number must be higher than 0.'

    = 記号の後、かつ ' and ' の間のテキストをインポートするには、正規表現 (?<=\\= ').*(?=') を使用します。

  4. errorMessage = \"this is to be translated\"

    = 記号の後、かつ 'and' の間のテキストをインポートするには、正規表現 (?<=\\= \").*(?=\") を使用します。

  5. msgstr (\"The number must be higher than 0.\")

    TXT フィルタを使用して単言語 PO ファイル内の msgstr Strings をインポートするには、正規表現 (?<=msgstr \").*(?=\") を使用します。

  6. # Note: This is a note

    # で始まる行を除外するには、正規表現 (^[^#].*) を使用します。

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

    引用符で囲まれ、(en) を含むテキスト(例: Text (en)')のみをインポートするには、正規表現 (?<=')[^']*\\(en\\)(?=') を使用します。

JSON インポート

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"         }    ]}
  • レベルに関係なくすべての値をインポートするには、次を使用します: (^|.*/)value

  • 一覧から値を1つだけインポートするには、次を使用します: list/value

  • 一覧やメニューから値をインポートするには、| (OR) 演算子を使用します: list/value|menu/value

  • メニューから値の最初のインスタンスのみをインポートするには、次を使用します: menu\\[1\\]/value

  • 特定のキーに続く JSON 配列のコンテンツをインポートするには、次を使用します: (^|.*/)array\\[.*\\]

  • 特定のオブジェクト配列のコンテンツをインポートするには、次を使用します: (^|.*/)arrays\\[.*\\].*

YAML インポート

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

インポート用正規表現:

  • 'translate A' のみ : text

  • 'translate C' のみ: categories\\[2\\]/text

  • 'translate D' のみ: categories\\[\\d+\\]/content[\\1\\]/text

  • all text: text|categories\[\d+\]/text|categories\[\d+\]/content[\d+\]/text

セグメンテーションルール

.SRX ファイルのセグメンテーションルールには OkapiJavaUnicode が使用されます。

.SRX ファイルでの正規表現の使用は複雑であり、それらを使用して仕事をする前に、正規表現の使用に関する基本的な知識を身につけることを推奨します。

Nobreak ルール(省略形など)および Break ルール(ドットで終わる文など)は .SRX ファイルに含まれています。

たとえば

項目

[\p{C}]

不可視の制御文字。

[\p{Z}]

空白文字

[\p{Lu}]

小文字のバリエーションを持つ大文字。

[\p{N}]

あらゆる種類の数字文字。

\Q ... \E

引用の開始と終了 - (\QApprox.\E)。これは省略形に使用されます。

\t

タブ文字

\n

改行文字

\u2029

段落区切り文字

\u200B

ゼロ幅スペース

\u3002

表意文字の句点

\ufe52

小句点

\uff0e

全角句点

\uff61

半角句点

\ufe56

小疑問符

\uff1f

全角疑問符

\\u203c

二重感嘆符

\u2048

疑問感嘆符

\u2762

太字感嘆符装飾

\u2763

太字ハート感嘆符装飾

\ufe57

小感嘆符

\uff01

全角感嘆符

`[\u0080-\uFFFF]+`

Unicode範囲 \\u0080 から \\uFFFF までの文字

`[\\u00a8\\u00b9\\u00c4]+`

角括弧内の指定されたUnicode文字の1回以上の出現(例: \\u00a8 + \\u00b9 + \\u00c4)

共通カスタムQAチェック

QAチェック

原文の正規表現

訳文の正規表現

訳文内の追加の数字

\d 

\d 

タグのオーダー(ペアになっていないもの、3つのタグを持つセグメント用)

必要なタグの数に応じて正規表現を調整してください。

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

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

タグのオーダー(3つのタグを持つセグメント用、ペア)

必要なタグの数に応じて正規表現を調整してください。

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

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

タグの前のスペース

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

タグの後のスペース

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

タグの前にスペースなし

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

ペアタグの後の非空白文字

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

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

角括弧がありません

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

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

丸括弧がありません

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

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

以下の正規表現を使用して、適切な言語固有の小数点記号を用い、同一の小数点数の数が一致しているかを確認してください。

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

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

この記事は役に立ちましたか?

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.