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

Regexp (TMS)

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

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

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

正規表現は、CAT デスクトップエディタのフィルタ、検索、置換フィールド、コンテンツ検索機能の原文フィールドと訳文フィールド、ファイル インポート設定tags 変換機能、およびセグメンテーション規則のカスタマイズに使用できます。

ヒント

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

Regex101 などのツールを使用して、正規表現をさまざまな入力でテストします。

注意

phraseはJava正規表現をサポートしますが、過負荷からシステムを守るために複雑な正規表現を拒否します。複雑な正規表現は、他の量指定子(所有格を除く)を含むグループに量指定子(所有格を除く)を持つ正規表現です。

一般的な例

ファイルのインポート時にテキストを tags に変換し、エディタで検索および置換機能で regexp を使用する例:

概要

<[^>]+>

represents <html_tag>

\{[^\}]+\}

は{variable}を、

\[[^\]]+\]

は[変数]を、

\[\[.+?\]\]

represents [[aa[11]bb]].

\$[^\$]+\$

represents $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}}コンテンツを翻訳せず tags に変換します

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

{{}}カッコで囲まれたテキストを表します

\([^\)]+\)

は()カッコで囲まれたテキストを表します

\^[^\^]+\^

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

\@[^\@]+\@

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

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

は^から ?の間のテキストを表します

\'[^']+\'

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

\"[^"]+\"

は「」で囲まれたテキストを表します

\%[^\%]+\%

は、 % 個のシンボルの間のテキストを表します

\$\{[^}]*\}

は、${から}までのテキストを表します。 例:${variable}

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

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

(?&lt;=\: ").*(?=")

コロンとスペースの後の二重引用符内のテキストを表します。例:文字列「キー」内の:「値」

(?&lt;=\: ').*(?=')

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

(?&lt;=\=).*(?=)

は、等号のあとでスペースを含まないテキストを表します。 例:キー=値

(.*)=

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

[^=]*$

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

\/\/\S*

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

</?mrk[^&gt;]*>

は、HTML/XML の open および closed mrk tags を表します。 例:<mrk ID="abc"> および </mrk>

\b[\p{Lu}]+\b

は単語全体を大文字で表します

TXT インポート

備考

TMS の TXT ファイルは 1 行ずつ処理されるため、他の環境で仕事をする特定の正規表現が期待どおりに機能しない可能性があります。

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

  1. ## エラーメッセージ ##1## 数値は 0 以上である必要があります。 ##Z##

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

  2. エラーメッセージ("この数値は 0 以上でなければなりません")

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

  3. 'errorMessage' = '数値は0以上である必要があります。'

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

  4. errorMessage = "this is to be translation"

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

  5. msgstr (「0 以上の数字を指定してください」)

    TXT フィルタを使用してモノリンガル PO ファイルの msgstr Strings をインポートするには、正規表現を使用します。(?<=msgstr)"*(?=")

  6. # 備考:これはメモです

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

  7. 値 '126'、 'DCeT'、 'Text (en)'

    Text (en)' など、引用符で囲まれ、(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 つだけインポートするには、 一覧/値を使用

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

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

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

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

YAML インポート

YAMLファイルの例:

タイトル:A
text: translate A
categories:
  タイトル:B
  text: translate B
categories:
  タイトル:C
  text: translate C
categories:
  content:
      タイトル:D
      text: translate D

インポートする正規表現:

  • only 'translate A' : text

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

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

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

セグメンテーション規則

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

.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 

tagsオーダー(unpaired、3 tagsのセグメント用)。

必要な tags 数に従って regexp を調整します。

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

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

tagsオーダー(paired、3 tagsのセグメント用)。

必要な tags 数に従って regexp を調整します。

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

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

tags の前のスペース

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

tags の後のスペース

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

tags の前にスペースがありません

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

pair tags の後の空白文字以外

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

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

角カッコの欠落

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

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

丸カッコの不使用

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

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

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

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.