1. 元字符 (Metacharacter)
匹配字符串的开始(位置): ^
匹配字符串的开始(不受处理多行选项影响): \A
匹配字符串的结束(位置): $
匹配字符串的结束(不受处理多行选项影响): \z
匹配字符串的开始/结束(位置): \b
匹配字符串的结束/行尾(不受处理多行选项影响): \Z
匹配数字/字母/下划线/汉字: \w
匹配(阿拉伯)数字: \d
匹配空白符(空格/全角空格/制表符/换行符): \s
匹配横向制表符: \t
匹配竖向制表符: \v
匹配回车: \r
匹配换行符: \n
匹配换页符: \f
匹配任意字符(除换行符\n): .
前述表达式重复任意次: *
2. 元字符转义 (查找元字符本身)
\. \* \\ \^ \$ 等.
3. 字符类 (自定义的元字符): [ ]
e.g. [13579] 匹配1或3或5或7或9中的任意一个数字.
4. 限定符 (规定表达式重复次数)
重复至少0次: *
重复至少1次: +
重复0次或1次: ?
重复n次: {n}
重复n次或更多次: {n,}
重复m到n次: {m,n}
e.g. \d{2,9} 匹配2-9位阿拉伯数字.
5. 分枝: |
p.s. 分枝条件按照从左到右的顺序测试. 如果已满足了某个分枝, 则匹配结束. 故使用分枝条件时, 一定要反复斟酌各个条件的书写顺序.
6. 反义
对于元字符, 把元字符里的字母小写换为大写即表示反义. 对于字符类, [^13579] 匹配除了1或3或5或7或9以外的任意字符. 一个不错的例子:
<a[^>]+> 匹配用尖括号括起来的以a开头的字符串
7. 分组: ( )
和编程写公式时多加括号防止写错有点类似. 不过这里的现实意义强得多, 可以用来写出比较复杂的表达式.
8. 贪婪/懒惰
在正则表达式中, [最先开始的匹配] 拥有最高优先权. 其次才是默认的贪婪匹配原则. 与之对应的懒惰匹配原则:
重复0次或1次: ??
重复至少1次: +?
重复m到n次: {m,n}?
重复n次以上: {n,}?
重复任意次: *?
9. 零宽断言
(1) 零宽度正预测先行断言: (?=exp)
断言此位置之后能匹配表达式exp
e.g. \b\w+(?=ly\b) 匹配以ly结尾的字符串的前面部分.
(2) 零宽度正回顾后发断言: (?<=exp)
断言此位置之前能匹配表达式exp
e.g. (?<=\bpre)\w+\b 匹配以pre开头的字符串的后面部分.
(3) 零宽度负预测先行断言: (?!exp)
断言此位置之后不能匹配表达式exp
e.g. \b((?!exe)\w)+\b 匹配不包含连续字符串exe的字符串.
(4) 零宽度负回顾后发断言: (?<!exp)
断言此位置之前不能匹配表达式exp
e.g. (?<!010)\d{8} 匹配前面不是010的8位数字.
10. 注释
(?#注释内容)

统计学也要学这些?
[回复]
Nan.Xiao 回复:
七月 23rd, 2010 at 15:59
自己学着玩的 ..
[回复]