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