在搜索和片段切分规则中使用的是 Java 支持的正则表达式(或简称为 regex)。如果需要更详细的信息,请参阅 Java Regex 文档. 查阅下面提到的附加参考和范例。
本章内容是为高级用户准备的,用于定义多变的分割规则或使用更复杂和强大的搜索功能。
表 16.2. Regex - 字符
构造 | ……匹配下列内容: |
---|---|
x | 字符 x,除了以下内容…… |
\uhhhh | 以十六进制值 0xhhhh 表示的字符 |
\t | 制表符 ('\u0009') |
\n | 新行(换行)符 ('\u000A') |
\r | 回车符 ('\u000D') |
\f | 换页符 ('\u000C') |
\a | 报警(响铃)符 ('\u0007') |
\e | 转义符 ('\u001B') |
\cx | 与 x 对应的控制字符 |
\0n | 八进制值 0n (0 <= n <= 7) 表示的字符 |
\0nn | 八进制值 0nn (0 <= n <= 7) 表示的字符 |
\0mnn | 八进制值 0mnn (0 <= m <= 3, 0 <= n <= 7) 表示的字符 |
\xhh | 十六进制值 0xhh 表示的字符 |
表 16.3. Regex - 引用
构造 | ……匹配下列内容 |
---|---|
\ | 什么都不匹配,但对以下字符进行引用。当您需要对 !$()*+.<>?[\]^{|} 中任意一个元字符进行匹配时需要使用它。 |
\\ | 例如,这是反斜杠字符 |
\Q | 什么都不匹配,但是引用 \E 之前的所有字符 |
\E | 什么都不匹配,但结束由 \Q 开始的引用 |
表 16.5. Regex - 字符类
构造 | ……匹配下列内容 |
---|---|
[abc] | a, b 或 c(简单的类) |
[^abc] | 除了 a、b 或 c 之外的任何字符(取反) |
[a-zA-Z] | a 到 z 和 A 到 Z 的字符,包含两边(范围) |
表 16.6. Regex - 预定义字符类
构造 | ……匹配下列内容 |
---|---|
. | 任何字符 (除了行结束符之外) |
\d | 数字:[0-9] |
\D | 非数字:[^0-9] |
\s | 空白字符:[ \t\n\x0B\f\r] |
\S | 非空白字符:[^\s] |
\w | 单词字符:[a-zA-Z_0-9] |
\W | 非单词字符:[^\w] |
贪婪量词会匹配尽可能多的字符。例如,a+? 将会匹配 aaabbb 中的 aaa
非贪婪量词会匹配尽可能少的字符。例如,a+? 将会匹配 aaabbb 中的 a
有许多用于开发和测试正则表达式的交互工具。他们几乎都遵循同样的模式(见下面的 Regular Expression Tester 示例):正则表达式(上面的条目)分析了搜索文本(中间的文本框),进行点击,显示结果文本框。
请参阅用于 Windows、Linux、FreeBSD 平台的独立工具 The Regex Coach。这个工具和上面的示例几乎一致。
在 OmegaT 内可找到非常有用的正则表达式实例集(请参阅选项 > 片段分割)。在搜索翻译记忆时,下列表所包含的表达式可能会有用:
表 16.11. Regex - 用于译文的正则表达式示例
正则表达式 | 查找以下内容: |
---|---|
(\b\w+\b)\s\1\b | 双字 |
[\.,]\s*[\.,]+ | 一个逗号或句点,跟着空格,然后是另一个逗号或句点 |
\. \s+$ | 在行尾,句点后跟着额外的空格 |
\s+a\s+[aeiou] | 英语:单词,以元音开始,前面可以是 "an" 而不能是 "a" |
\s+an\s+[^aeiou] | 英语:如上一条表达式,但为辅音("a",而不是 "an") |
\s\s+ | 一个以上空格 |
\.[A-Z] | 句点,跟着一个大写字母——是否在句点和下一个句子间遗漏了空格? |