正規表現(略してregexまたはregex)は、主に文字列または文字列の一致におけるパターンマッチングに使用される検索パターンを形成する文字のシーケンスです。機能は、より複雑で特定的な操作や、定義されたコンテンツを除外する方法としての検索と置換操作に似ています。正規表現の詳細な説明と使用される文字の表については、wikipediaエントリーを参照してください。
複数の正規表現を同時に使用するには、それらの間にパイプライン文字|を挿入します。
正規表現は、CATエディタのフィルタ、検索および置換フィールド、コンテンツ検索機能のソースおよびターゲットフィールド、機能のファイルインポート設定、およびセグメンテーションルールのカスタマイズに使用できます。コンバータとCATデスクトップエディタはJava regexを使用しますが、CATウェブエディタとTMSの検索はLucene regexエンジンを使用します。
重要
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 |
|
(?<=\: ").*(?=") |
コロンとスペースの後の二重引用符内のテキストを表します。例: |
|
(?<=\: ').*(?=') |
コロンとスペースの後の単一引用符内のテキストを表します。例: |
|
(?<=\=).*(?=) |
イコール記号の後のテキストを表します。スペースなし。例: key=value |
|
(.*)= |
等号の前のテキストを表します |
|
=(.*) |
等号の後のテキストを表します |
|
\/\/\S* |
ハイパーリンクを表します。また、https:\/\/\S* |
|
</?mrk[^>]*> |
HTML/XMLの開閉タグを表します |
備考
TMS内のTXTファイルは行ごとに処理されるため、他の環境で機能する正規表現が期待通りに機能しない場合があります。
特定のテキストをインポートする際の正規表現の例:
-
## エラーメッセージ ##1## 数は0より大きくなければなりません。 ##Z##
##1## と ##Z## の間のテキストをインポートするには、正規表現を使用します:
(?<=##1## ).*(?= ##Z##) -
エラーメッセージ ("数は0より大きくなければなりません。")
(" と ") の間のテキストをインポートするには、正規表現を使用します:
(?<=\(").*(?="\)) -
'errorMessage' = '数は0より大きくなければなりません。'
= 記号の後のテキストをインポートし、' と ' の間にあるテキストをインポートするには、正規表現を使用します:
(?<=\= ').*(?=') -
errorMessage = "翻訳されるべきテキスト"
= 記号の後のテキストをインポートし、'と' の間にあるテキストをインポートするには、正規表現を使用します:
(?<=\= ").*(?=") -
msgstr ("数は0より大きくなければなりません。")
単言語POファイルでmsgstr文字列をTXTフィルタを使用してインポートするには、正規表現を使用します:
(?<=msgstr ").*(?=") -
# 注意: これは注釈です
#で始まる行を除外するには、正規表現を使用します:
(^[^#].*) -
値 '126', 'DCeT', 'テキスト (en)'
引用符内のテキストのみをインポートし、(en)を使用するには、次のようにします:
(?<=')[^']*\(en\)(?=')
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ファイルの例:
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
Okapi、Java、および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チェック |
ソース正規表現 |
ターゲット正規表現 |
|---|---|---|
|
ターゲット内の追加番号 |
|
|
|
タグの順序(未ペア、3つのタグを持つセグメント用)。 必要なタグの数に応じて正規表現を調整してください。 |
|
|
|
タグの順序(ペア、3つのタグを持つセグメント用)。 必要なタグの数に応じて正規表現を調整してください。 |
|
|
|
タグの前のスペース |
|
|
|
タグの後のスペース |
|
|
|
タグの前にスペースはありません |
|
|
|
ペアタグの後の非空白文字 |
|
|
|
角括弧が欠落しています |
|
|
|
丸括弧が欠落しています |
|
|
|
同じ小数点数のカウントを確認するために、適切な言語固有の小数点区切り記号を使用して、次の正規表現を使用してください。 |
|
|