正規表現(regex または regexp の略)は、主にStrings列とのパターンマッチングや文字列列マッチングで使用する検索パターンを形成する文字のシーケンスです。機能は、より複雑で具体性のある検索および置換操作や、定義されたコンテンツを除外するための方法として似ています。正規表現の詳細と使用文字の表については、wikipediaのエントリーを参照してください。
一度に複数の正規表現を使用するには、正規表現の間にパイプライン文字 |
を挿入します。
正規表現は、CAT デスクトップエディタのフィルタ、検索、置換フィールド、コンテンツ検索機能の原文フィールドと訳文フィールド、ファイル インポート設定の 機能、およびセグメンテーション規則のカスタマイズに使用できます。
注意
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 |
(?<=\: ").*(?=") |
コロンとスペースの後の二重引用符内のテキストを表します。例:文字列 |
(?<=\: ').*(?=') |
は、コロンとスペースの後の単一引用符内のテキストを表します。例:文字列 |
(?<=\=).*(?=) |
は、等号のあとでスペースを含まないテキストを表します。 例:キー=値 |
(.*)= |
は等号の前のテキストを表します |
[^=]*$ |
は等号の後のテキストを表します |
\/\/\S* |
はハイパーリンクを表します。また、https:\/\/\S* |
</?mrk[^>]*> |
は、HTML/XML の open および closed |
\b[\p{Lu}]+\b |
は単語全体を大文字で表します |
備考
TMS の TXT ファイルは 1 行ずつ処理されるため、他の環境で仕事をする特定の正規表現が期待どおりに機能しない可能性があります。
特定のテキストをインポートする際の正規表現の例:
-
## エラーメッセージ ##1## 数値は 0 以上である必要があります。 ##Z##
##1##から ##Z## までのテキストをインポートするには、正規表現を使用:
(?<=##1## )。*(?= ##Z##)
-
エラーメッセージ("この数値は 0 以上でなければなりません")
(" から ") の間のテキストをインポートするには、正規表現を使用:
(?<=\()"*(?="\)
-
'errorMessage' = '数値は0以上である必要があります。'
= 記号の後、' と ' の間のテキストをインポートするには、正規表現を使用します。
(?<\= ')*(?=')
-
errorMessage = "this is to be translation"
「=」記号の後、「」と「」の間のテキストをインポートするには、正規表現を使用します。
(?<=\=)"*(?=")
-
msgstr (「0 以上の数字を指定してください」)
TXT フィルタを使用してモノリンガル PO ファイルの msgstr Strings をインポートするには、正規表現を使用します。
(?<=msgstr)"*(?=")
-
# 備考:これはメモです
# で始まる行を除外するには、正規表現を使用:
(^[^#].*)
-
値 '126'、 'DCeT'、 'Text (en)'
Text (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 つだけインポートするには、
一覧/値
を使用 -
一覧やメニューから値をインポートするには、 | (OR) 演算子を使用します。
一覧/値|メニュー/値
-
メニューから値の最初のインスタンスのみをインポートするには、
menu\[1\]/value
を使用 -
特定のキーに続く JSON 配列のコンテンツをインポートするには、
(^|.*/)array\[.*\]
-
特定のオブジェクト配列のコンテンツをインポートするには、
(^|.*/)arrays\[.*\].*
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ファイルのセグメンテーション規則には、Okapi、Java、および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チェック |
原文正規表現 |
訳文正規表現 |
---|---|---|
訳文の追加の数字 |
|
|
tagsオーダー(unpaired、3 tagsのセグメント用)。 必要な tags 数に従って regexp を調整します。 |
|
|
tagsオーダー(paired、3 tagsのセグメント用)。 必要な tags 数に従って regexp を調整します。 |
|
|
tags の前のスペース |
|
|
tags の後のスペース |
|
|
tags の前にスペースがありません |
|
|
pair tags の後の空白文字以外 |
|
|
角カッコの欠落 |
|
|
丸カッコの不使用 |
|
|