正正则表达式式(缩写为正则表达式或正则表达式)是一串字符,它们构成搜索模式,主要使用于与字Strings的模式匹配或字字符串匹配。功能类似于查找和替换更复杂、更具体的操作,或作为排除已定义内容的方法。有关正则表达式的详细说明和使用字符表,请参阅维基百科条目。
要同时使用多个正则表达式,请在它们之间插入一个管道字符 |
。
正则表达式可用于 CAT 桌面编辑器中的筛选、搜索和替换字段、搜索内容功能的原文/源语和译文字段、文件导入设置中的 功能和自定义断句规则。
重要
phrase 支持 Java 正则表达式,但将驳回复杂的正则表达式,以保护系统免受过载。复杂正则表达式是那些在包含其他量词(占有式除外)的组中带有量词(占有式除外)的正则表达式。
导入文件和在编辑器中使用正则表达式搜索和替换功能时将文本转换为 tags 的示例:
示例 |
说明 |
---|---|
<[^>]+> |
represents <html_tag> |
\{[^\}]+\} |
表示 {variable}, |
\[[^\]]+\] |
表示[变量], |
\[\[.+?\]\] |
表示 [[aa[11]bb]]。 |
\$[^\$]+\$ |
represents $operator_Name1$. |
\d+ |
代表数字。另外,[0-9]+ |
[A-Za-z0-9] |
代表任何字母数字字符。 |
.+\@.+\..+ |
电子邮件地址 name@domain.com |
\d{4}[-]\d{2}[-]\d{2} |
日期 2018-08-01 |
\s$ |
句段末尾的空格 |
^\sS |
句段开头的空格 |
\s\s |
双空格 |
^\d |
句段开头的数字 |
\w+\s\s\w+ |
单词之间的双空格 |
\s\n |
任何空格字符之前的换行符 |
\S\n |
任何非空格字符之前的换行 |
<[^>]+>|\$[^=]+= |
转换 PHP 变量和 html 代码 ($svariable['name'] =) |
^\s*\'[^:]+:S |
转换 javascript 的字段键,并在行首添加空格(“键”:) |
\{\{[^\}]+\}\}|\'[^']+\' |
不翻译 {{text here}}'{{text here}} 内容并将其转换为 tags |
\{\{[^\}]+\}\} |
表示{}括号之间的文本 |
\([^\)]+\) |
表示 () 括号之间的文本 |
\^[^\^]+\^ |
表示 ^ 标记之间的文本 |
\@[^\@]+\@ |
表示 @ 标记之间的文本 |
\^[^\^\?]+\? |
表示介于 ^ 和=%? 标记之间的文本 |
\'[^']+\' |
表示撇号“”之间的文本 |
\"[^"]+\" |
表示“”引号之间的文本 |
\%[^\%]+\% |
表示介于=%% 符号之间的文本 |
\$\{[^}]*\} |
表示${到}之间的文本,例如${variable} |
$[a-zA-Z0-9\-_]+ |
表示以$开头的字符串,例如$appName |
(?<=\: ").*(?="") |
表示冒号和空间后双引号内的文本,例如字符串 |
(?<=\:').*(?=') |
表示冒号和空间后单引号内的文本,例如字符串 |
(?<=\=).*(?=) |
表示等于号后且不带空间的文本,例如键=值 |
(.*)= |
表示等于号前的文本 |
[^=]*$ |
表示等于号后的文本 |
\/\/\S* |
表示超链接。此外,https:\/\/\S* |
</?mrk[^>]*> |
表示 HTML/XML 打开和关闭 |
\b[\p{Lu}]+\b |
用大写字母表示整个单词 |
注释
由于 TMS 中的 TXT 文件是逐行处理的,因此某些在其他环境中工作的正则表达式可能无法正常运行。
导入特定文本时正则表达式示例:
-
##错误信息##1##数字必须大于0.##Z##
要导入 ##1## 到 ##Z## 之间的文本,使用正则表达式:
(?<=##1##).*(?=##Z##)
-
错误信息(“数字必须大于 0”)
要导入 (" 和 ") 之间的文本,使用正则表达式:
(?<=\("). *(?="\))
-
"errorMessage"" =""数字必须大于 0""。"
要导入 = 符号之后和 ' 与 ' 之间的文本,使用正则表达式:
(?<=\}=')。*(?=')
-
errorMessage = "这是要翻译的"
要在 = 符号之后和“和”之间导入文本,使用正则表达式:
(?<=\=“)。*(?=”
-
msgstr(“该数字必须大于0.”)
要使用 TXT 筛选导入单语 PO 文件中的 msgstr Strings,使用正则表达式:
(?<=msgstr ")。*(?=")
-
# 注释:这是一个注释
要排除以 # 开头的行,使用正则表达式:
(^[^#].*)
-
值“126”、“DCeT”、“文本(en)”
仅导入引号中和带有 (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":“蓝色” }, { "color": "green", "title":"GREEN" } ]}
-
无论导入哪个级别的所有值,使用:
(^|.*/)value
-
仅从列表导入一个值,使用:
列表/值
-
要从列表和/或菜单导入值,使用 | (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
导入的正则表达式:
-
仅“翻译 A”:
文本
-
仅“翻译 C”:
类别\[2\]/文本
-
仅“翻译 D”:
类别\[\d+\]/内容[\1\]/文本
-
所有文本:
文本|类别\[\d+\]/文本|类别\[\d+\]/内容[\d+\]/文本
Okapi、Java 和 Unicode 用于 .SRX 文件中的断句规则。
在 .SRX 文件中使用正则表达式很复杂,建议在尝试工作它们之前先了解正正则表达式式的基本使用。
无中断规则(缩写等)和中断规则(句尾带点等)在 .SRX 文件中。
示例 |
说明 |
---|---|
[\p{C}] |
无形的控制字符。 |
[\p{Z}] |
空白 |
[\p{Lu}] |
带有小写变体的大写字母。 |
[\p{N}] |
任何类型的数字字符。 |
\Q ... \E |
报价的开始和结束 - (\Q约.\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 字符的一个或多个出现,例如 \u00a8 + \u00b9 + \u00c4 |
QA 检查 |
原文/源语正则表达式 |
译文正则表达式 |
---|---|---|
译文中附加数字 |
|
|
Tags 订单(未配对,适用于有 3 tags 的句段)。 根据所需的 tags 数量调整正则表达式。 |
|
|
Tags 订单(已配对,用于具有 3 tags 的句段)。 根据所需的 tags 数量调整正则表达式。 |
|
|
tags 前的空格 |
|
|
tags 后的空格 |
|
|
tags 前没有空间 |
|
|
配对 tags 后的非空格字符 |
|
|
缺少方括号 |
|
|
缺少圆括号 |
|
|