正则表达式构造

在搜索和片段切分规则中使用的是 Java 支持的正则表达式(或简称为 regex)。如果你需要更多的信息,请参阅 http://java.sun.com/j2se/1.4.2/docs/api/java/util/regex/Pattern.html。查阅下面提到的附加参考和范例。 

标志

字符

引用

为 Unicode 字块和分类准备的类

字符分类

预定义字符类

边界匹配

贪婪量词

勉强 (非贪婪) 量词

逻辑操作符

正则表达式的工具和使用实例

    

 


构造……

……匹配下列内容:


标志

(?i)

激活大小写不敏感匹配(缺省模式为大小写敏感)


字符

x

字符 x, 除了以下内容……

\uhhhh

以十六进制数值表示的字符<t0>0x</t0>hhhh

\t

制表符 (<t0>'\u0009'</t0>)

\n

新行 (换行) 字符 (<t0>'\u000A'</t0>)

\r

回车字符(<t0>'\u000D'</t0>)

\f

换页符 ('\u000C')

\a

报警 (响铃) 字符 ('\u0007')

\e

转移字符 ('\u001B')

\cx

对应x的控制字符

\0n

后跟八进制数值的字符 0n (0 <= n <= 7)

\0nn

后跟八进制数值的字符 0n (0 <= n <= 7)

\0mnn

后跟八进制数值的字符 0mnn (0 <= m <= 3, 0 <= n <= 7)

\xhh

以十六进制数值表示的字符0xhh


引用

\

什么都不是,但对以下字符进行引用。当你需要对 !$()*+.<>?[\]^{|} 进行匹配时需要使用它。

\\

例如,这是反斜杠字符

\Q

什么都不是,但是引用 <t0>\E</t0>之前的所有字符

\E

什么都没有,但是结束由 \Q开始的引用


为 Unicode 字块和分类准备的类

\p{InGreek}

希腊字块中的字符 (简单地使用 block)

\p{Lu}

大写字母 (简单地使用 category)

\p{Sc}

货币符号

\P{InGreek}

任何不在 Greek 字块中的字符 (取反)

[\p{L}&&[^\p{Lu}]]

除大写字母之外的所有字母 (减法)


字符分类

[abc]

<t0>a</t0>、 <t1>b</t1>或者 <t2>c</t2> (简单分类)

[^abc]

除了 <t0>a</t0>、<t1>b</t1> 或 <t2>c</t2> (取反)之外的任何字符。

[a-zA-Z]

<t0>a</t0> 到 <t1>z</t1> 并 <t2>A</t2> 到 <t3>Z</t3>, 包含(范围)


预定义字符类

.

任何字符 (除了行结束符之外)

\d

单个数字: [0-9]

\D

一个非数字字符: <t0>[^0-9]</t0>

\s

一个空白字符: [ \t\n\x0B\f\r]

\S

一个非空字符: <t0>[^\s]</t0>

\w

一个单词字符: <t0>[a-zA-Z_0-9]</t0>

\W

一个非单词字符: <t0>[^\w]</t0>


边界匹配

^

行首

$

行尾

\b

单词边界

\B

非单词边界


贪婪量词

该符号导致尽可能进行匹配。例如,a+ 将会匹配aaabbb中的aaa

X?

X一次或根本不出现

X*

X出现0次或多次

X+

X出现1次以上


勉强 (非贪婪) 量词

该字符将导致尽可能少地进行匹配。例如: a+? 将会匹配aaabbb中的 a

X??

X一次或根本不出现

X*?

X出现0次或多次

X+?

X出现1次以上


逻辑操作符

XY

X 后面紧跟一个Y

X|Y

XY

(XY)

XY 作为单个组出现



正则表达式的工具和使用实例


有许多用于开发和测试正则表达式的交互工具。他们都几乎按照同样的模式(见下面的用于火狐浏览器的伊纳形式插件):正则表达式(上面的条目)分析了搜索文本(中间的文本框),进行点击,显示结果文本框。

火狐浏览器的正则表达式测试插件

参见 Windows,Linux, Mac, FreeBSD 版本的独立工具 The Regex Coach ,它几乎与上面的例子一模一样。

可在 OmegaT 内(参见 选项 > 片段分割)找到非常有用 regex 实例集合。在搜索译法记忆时,下列表所包含的表达式可能会有用:

正则表达式 查找以下内容:
(\b\w+\b)\s\1\b
双字 
[\.,]\s*[\.,]+ t 逗号及句点的组合
\. \s$ 额外的空格,后面紧跟着句点和行尾
\s+a\s+[aeiou]  英语:单词,以元音开始,可以是 "an" 而不能是 "a"
\s+an\s+[^aeiou]  英语:如上一条表达式,但辅音("a", 而不是 "an")
\s\s+ 一个以上空格
\.[A-Z] 在句点和新句子头部之前缺失了一个空白



法律声明 首页 内容索引