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

正規表現 (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のフィールドキーを変換します ( 'キー' :)

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

{{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.