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

Regex (TMS)

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

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

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

正規表現は、CATエディタのフィルタ、検索および置換フィールドコンテンツ検索機能のソースおよびターゲットフィールド、タグに変換機能のファイルインポート設定、およびセグメンテーションルールのカスタマイズに使用できます。コンバータとCATデスクトップエディタはJava regexを使用しますが、CATウェブエディタとTMSの検索はLucene regexエンジンを使用します。

ヒント

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

Regex101のようなツールを使用して、異なる入力で正規表現をテストします。

注意

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

一般的な例

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

たとえば

項目

<[^>]+>

represents <html_tag>

\{[^\}]+\}

は{variable}を表します、

\[[^\]]+\]

は[variable]を表します、

\[\[.+?\]\]

represents [[aa[11]bb]].

\$[^\$]+\$

は$operator_Name1$を表します。

\d+

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

[A-Za-z0-9]

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

.+\@.+\..+

メールアドレス 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}} コンテンツを翻訳せず、タグに変換します

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

{{}} 括弧の間のテキストを表します

\([^\)]+\)

() 括弧の間のテキストを表します

\^[^\^]+\^

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

\@[^\@]+\@

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

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

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

\'[^']+\'

' ' アポストロフィの間のテキストを表します

\"[^"]+\"

"" 引用符の間のテキストを表します

\%[^\%]+\%

%記号の間のテキストを表します

\$\{[^}]*\}

${と}の間のテキストを表します。例:${variable}

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

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

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

コロンとスペースの後の二重引用符内のテキストを表します。例:valueは文字列"key": "value"の中にあります。

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

コロンとスペースの後の単一引用符内のテキストを表します。例:JohnDoeは文字列user: 'JohnDoe'の中にあります。

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

等号の後のテキストを表します。スペースなし。例:key=value

(.*)=

等号の前のテキストを表します

=(.*)

等号の後のテキストを表します

\/\/\S*

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

</?mrk[^>]*>

HTML/XMLの開閉mrkタグを表します。例:<mrk id="abc">および</mrk>

TXTインポート

備考

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

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

  1. ## エラーメッセージ ##1## 数字は0より大きくなければなりません。 ##Z##

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

  2. エラーメッセージ ("数字は0より大きくなければなりません。")

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

  3. 'errorMessage' = '数字は0より大きくなければなりません。'

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

  4. エラーメッセージ = "これは翻訳されるべきです"

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

  5. msgstr ("数字は0より大きくなければなりません。")

    単言語POファイルでmsgstr文字列をTXTフィルターを使用してインポートするには、正規表現を使用します: (?<=msgstr ").*(?=")

  6. # 注: これはメモです

    行の先頭が#で始まるものを除外するには、正規表現を使用します: (^[^#].*)

  7. 値 '126', 'DCeT', 'テキスト (en)'

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

JSONインポート

JSON構造の例:

{
"list": {
        "id": "1",
        "value": "text 1 for translation."
        },
"text": {
        "id": "2",
        "value": "text 2 for translation."
        },
"メニュー": {
        "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

  • すべてのテキスト: text|categories\[\d+\]/text|categories\[\d+\]/content[\d+\]/text

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

OkapiJava、およびUnicodeは.SRXファイルのセグメンテーションルールに使用されます。

.SRXファイルでの正規表現の使用は複雑であり、作業を試みる前に正規表現の基本的な知識を推奨します。

ノーブレークルール(略語など)とブレークルール(文の終わりにドットがあるなど)は.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.