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

正規表現 (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]を表します、

\[\[.+?\]\]

[[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}} コンテンツを翻訳せず、タグに変換します

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

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

\([^\)]+\)

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

\^[^\^]+\^

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

\@[^\@]+\@

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

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

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

\'[^']+\'

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

\"[^"]+\"

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

\%[^\%]+\%

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

\$\{[^}]*\}

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

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

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

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

コロンとスペースの後の二重引用符内のテキストを表します。例: value in the string "key": "value"

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

コロンとスペースの後の単一引用符内のテキストを表します。例: JohnDoe in the string 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. errorMessage = "翻訳されるべきテキスト"

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

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

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

  6. # 注意: これは注釈です

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

  7. 値 '126', 'DCeT', 'テキスト (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つの値のみをインポートするには、次のようにします: 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

インポート用の正規表現:

  • 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

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

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.