正規表現(regex または regexp と省略)は、主に Strings とのパターンマッチングまたは文字列マッチングで使用する検索パターンを形成する文字のシーケンスです。機能は、より複雑で具体性のある検索および置換操作や、定義済みコンテンツを除外する方法に似ています。正規表現の詳細と使用文字の表については、wikipediaのエントリーを参照してください。
一度に複数の正規表現を使用するには、正規表現の間にパイプライン文字 |
を挿入します。
正規表現は、CATデスクトップエディタのフィルタ、検索、置換フィールド、コンテンツ検索機能の原文フィールドと訳文フィールド、ファイルインポート設定の 機能、およびセグメンテーションルールのカスタマイズに使用できます。
AIチャットボットは、正規表現の生成と検証に非常に効果的です。
Important
phraseはJava正規表現をサポートしますが、システムを過負荷から保護するために複雑な正規表現を拒否します。複合正規表現は、他の限定詞(所有格を除く)を含むグループに限定詞(所有格を除く)を含む正規表現です。
ファイルのインポート時にテキストを tags に変換し、エディタで検索と置換機能に正規表現を使用する例:
例 |
概要 |
---|---|
<[^>]+> |
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に変換します |
特定のテキストをインポートする際の正規表現の例:
-
## エラーメッセージ ##1## 数値は 0 以上である必要があります。 ##Z##
##1##から##Z##までのテキストをインポートするには、正規表現を使用:
(?<=##1##)。*(?= ##Z##)
-
エラーメッセージ("数値は0以上である必要があります")
(" と") の間のテキストをインポートするには、正規表現を使用:
(?<=\().*(?="\)
-
'errorMessage' = '数値は0以上である必要があります。'
= 記号の後、' と ' の間のテキストをインポートするには、正規表現を使用します:
(?<=\= ')。*(?=')
-
errorMessage = "this is to be translated"
= 記号の後、「」と「」の間のテキストをインポートするには、正規表現を使用します。
(?<=\=")*(?=")
-
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 カテゴリ: タイトル:B text: translate B カテゴリ: タイトル:C text: translate C カテゴリ: 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ファイルでの正規表現の使用は複雑で、正規表現の使用に関する基本的な知識を身に付けてから作業をすることをお勧めします。
ノーブレークルール(略語など)とブレークルール(ピリオドなどで文の終わり)は、.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 |
全角感嘆符 |
QAチェック |
原文正規表現 |
訳文正規表現 |
---|---|---|
訳文の追加の数字 |
|
|
tagsオーダー(unpaired、3 tagsのセグメント用)。 必要なtags数に従って正規表現を調整します。 |
|
|
tagsオーダー(paired、3 tagsのセグメント用)。 必要なtags数に従って正規表現を調整します。 |
|
|
tags の前のスペース |
|
|
tags の後のスペース |
|
|
tags の前にスペースがありません |
|
|
Paired tags の後の非空白文字 |
|
|
角カッコの欠落 |
|
|
丸カッコの欠落 |
|
|