还有什么没提到呢?
到目前为止,已经提到了许多建立RE的元素,当然还有许多元素没有提到,下表整理了一些没提到的元素,在最左边的字段的数字是说明在Expresso中的例子。
# 语法 说明
/a Bell 字符
/b 通常是指字的边界,在字符组里所代表的就是backspace
/t Tab
34 /r Carriage return
/v Vertical Tab
/f From feed
35 /n New line
/e Escape
36 /nnn ASCII八位码为nnn的字符
37 /xnn 十六位码为nn的字符
38 /unnnn Unicode为nnnn的字符
39 /cN Control N字符,举例来说Ctrl-M是/cM
40 /A 字符串的开始(和^相似,但不需籍由multiline选项)
41 /Z 字符串的结尾
/z 字符串的结尾
42 /G 目前查找的开始
43 /p{name} Unicode 字符组名称为name的字符,比如说/p{Lowercase_Letter} 所指的就是小写字
(?>exp) Greedy次描述,又称之为non-backtracking次描述。这只符合一次且不采backtracking。
44 (?<x>-<y>exp)
or (?-<y>exp) 平衡群组。虽复杂但好用。它让已命名的抓取群组可以在堆栈中操作使用。(小弟对这个也是不太懂哩)
45 (?im-nsx:exp) 为次描述exp更改RE选项,比如(?-i:Elvis)就是把Elvis大乎略大小写的选项关掉
46 (?im-nsx) 为之后的群组更改RE选项。
(?(exp)yes|no) 次描述exp视为zero-width positive lookahead。若此时有符合,则yes次描述为下一个符合标的,若否,则no 次描述为下一个符合标的。
(?(exp)yes) 和上述相同但无no次描述
(?(name)yes|no) 若name群组为有效群组名称,则yes次描述为下一个符合标的,若否,则no 次描述为下一个符合标的。
47 (?(name)yes) 和上述相同但无no次描述
结论
经过了一连串的例子,及Expresso的帮忙,相信各位大大对RE有个基本的了解,网络上当然有许多有关于RE的文章,如果各位大大有兴趣http://www.codeproject.com 还有许多关于RE的相关文章。若大大对书有兴趣的话,Jeffrey Friedl的Mastering Regular Expressions很多大大都有推(小弟还没拜读)。希望籍由这样的心得报告,能让对RE有兴趣的大大能缩短学习曲线,当然这是小弟第一次接触RE,若文章中有什么错误或说明的不好的地方,可要请各位大大体谅,并请各位大大将需要修正的地方mail给小弟,小弟会非常感谢各位大大。