第一部分 2
第1章 字符组 2
1.1普通字符组 2
1.2关于Python的基础知识 4
1.3普通字符组(续) 6
1.4元字符与转义 8
1.5排除型字符组 10
1.6字符组简记法 12
1.7字符组运算 14
1.8 POSIX字符组 15
第2章 量词 17
2.1一般形式 17
2.2常用量词 18
2.3数据提取 21
2.4点号 23
2.5滥用点号的问题 23
2.6忽略优先量词 26
2.7转义 31
第3章 括号 33
3.1分组 33
3.2多选结构 39
3.3引用分组 44
3.3.1反向引用 48
3.3.2各种引用的记法 50
3.3.3命名分组 53
3.4非捕获分组 54
3.5补充 55
3.5.1转义 55
3.5.2 URL Rewrite 56
3.5.3一个例子 58
第4章 断言 59
4.1单词边界 59
4.2行起始/结束位置 61
4.3环视 68
4.4补充 74
4.4.1环视的价值 74
4.4.2环视与分组编号 74
4.4.3环视的支持程度 75
4.4.4环视的组合 77
4.4.5断言和反向引用之间的关系 79
第5章 匹配模式 81
5.1不区分大小写模式 81
5.1.1模式的指定方式 82
5.2单行模式 84
5.3多行模式 85
5.4注释模式 87
5.5补充 88
5.5.1更多的模式 88
5.5.2修饰符的作用范围 89
5.5.3失效修饰符 90
5.5.4模式与反向引用 90
5.5.5冲突策略 91
5.5.6哪种方式更好 92
第6章 其他 93
6.1转义 93
6.1.1字符串转义与正则转义 93
6.1.2元字符的转义 97
6.1.3彻底消除元字符的特殊含义 99
6.1.4字符组中的转义 101
6.2正则表达式的处理形式 101
6.2.1函数式处理 102
6.2.2面向对象式处理 102
6.2.3比较 103
6.2.4线程安全性 104
6.3表达式中的优先级 106
第二部分 110
第7章 Unicode 110
7.1关于编码 110
7.2推荐使用Unicode编码 111
7.3 Unicode匹配规则 115
7.4单词边界 117
7.5码值 119
7.6 Unicode属性 121
7.6.1 Unicode Property 121
7.6.2 Unicode Block 122
7.6.3 Unicode Script 123
7.7 Unicode属性列表 123
7.7.1 Unicode Property 123
7.7.2 Unicode Block 125
7.7.3 Unicode Script 128
7.8 POSIX字符组 129
第8章 匹配原理 130
8.1有穷自动机 130
8.2正则表达式的匹配过程 131
8.3回溯 134
8.4 NFA和DFA 136
第9章 常见问题的解决思路 138
9.1关于元素的三种逻辑 138
9.1.1必须出现 139
9.1.2可能出现 139
9.1.3不能出现 140
9.2正则表达式的常见操作 142
9.2.1提取 142
9.2.2验证 148
9.2.3替换 152
9.2.4切分 157
9.3正则表达式的优化建议 159
9.3.1使用缓存 159
9.3.2尽量准确地表达意图 160
9.3.3避免重复匹配 160
9.3.4独立出文本和锚点 161
9.4别过分依赖正则表达式 162
9.4.1彻底放弃字符串操作 162
9.4.2思维定势 163
9.4.3正则表达式可以匹配各种文本 164
第三部分 168
第10章 .NET 168
10.1预备知识 168
10.2正则功能详解 169
10.2.1列表 169
10.2.2字符组 170
10.2.3 Unicode属性 170
10.2.4字符组简记法 171
10.2.5单词边界 171
10.2.6行起始/结束位置 172
10.2.7环视 173
10.2.8匹配模式 173
10.2.9捕获分组的引用 174
10.3正则API简介 175
10.3.1 Regex 175
10.3.2 Match 179
10.4常用操作示例 180
10.4.1验证 180
10.4.2提取 180
10.4.3替换 181
10.4.4切分 182
第11章 Java 183
11.1预备知识 183
11.2正则功能详解 184
11.2.1列表 184
11.2.2字符组 184
11.2.3 Unicode属性 186
11.2.4字符组简记法 186
11.2.5单词边界 186
11.2.6行起始/结束位置 187
11.2.7环视 188
11.2.8匹配模式 188
11.2.9纯文本模式 189
11.2.10捕获分组的引用 189
11.3正则API简介 189
11.3.1 Pattern 190
11.3.2 Matcher 192
11.3.3 String 194
11.4常用操作示例 195
11.4.1验证 195
11.4.2提取 196
11.4.3替换 196
11.4.4切分 197
第12章 JavaScript 198
12.1预备知识 198
12.2正则功能详解 199
12.2.1列表 199
12.2.2字符组 199
12.2.3字符组简记法 200
12.2.4单词边界 200
12.2.5行起始/结束位置 201
12.2.6环视 201
12.2.7匹配模式 202
12.2.8捕获分组的引用 203
12.3正则API简介 203
12.3.1 RegExp 203
12.3.2 String 207
12.4常用操作示例 210
12.4.1验证 210
12.4.2提取 210
12.4.3替换 211
12.4.4切分 211
12.5关于ActionScript 211
12.5.1 RegExp 211
12.5.2匹配规则 212
12.5.3匹配模式 212
12.5.4正则API 212
第13章 PHP 213
13.1预备知识 213
13.2正则功能详解 215
13.2.1列表 215
13.2.2字符组 216
13.2.3 Unicode属性 217
13.2.4字符组简记法 217
13.2.5单词边界 217
13.2.6行起始/结束位置 218
13.2.7环视 219
13.2.8匹配模式 219
13.2.9纯文本模式 220
13.2.10捕获分组的引用 220
13.3正则API简介 221
13.3.1 PREG常量说明 221
13.3.2 preg_quote 222
13.3.3 preg_ grep 223
13.3.4 preg_ match 223
13.3.5 preg_ match all 225
13.3.6 preg_ last_error 227
13.3.7 preg replace 227
13.3.8 preg_ replace_ callback 227
13.3.9 preg_ fiilter 228
13.3.10 preg_ split 229
13.4常见的正则操作举例 230
13.4.1验证 230
13.4.2提取 230
13.4.3替换 231
13.4.4切分 232
第14章 Python 233
14.1预备知识 233
14.2正则功能详解 234
14.2.1列表 234
14.2.2字符组 235
14.2.3 Unicode属性 236
14.2.4字符组简记法 236
14.2.5单词边界 238
14.2.6行起始/结束位置 239
14.2.7环视 239
14.2.8匹配模式 240
14.2.9捕获分组的引用 240
14.3正则API简介 241
14.3.1 RegexObject 241
14.3.2 re.compile(regex[,flags]) 243
14.3.3 re.search(pattern, string[,flags]) 243
14.3.4 MatchObject 243
14.3.5 re.match(pattern, string[,flags]) 244
14.3.6 re.fiindall(pattern, sting[, flags]) 245
14.3.7 re.fiinditer(pattern, string[, flags]) 245
14.3.8 re.split(pattern, string[, maxsplit=0, flags=0]) 246
14.3.9 re.sub(pattern, repl, string[, count, flags]) 247
14.4常用操作示例 248
14.4.1验证 248
14.4.2提取 248
14.4.3替换 249
14.4.4切分 250
第15章 Ruby 251
15.1预备知识 251
15.2正则功能详解 252
15.2.1列表 252
15.2.2字符组 252
15.2.3 Unicode属性 253
15.2.4字符组简记法 254
15.2.5单词边界 254
15.2.6行起始/结束位置 255
15.2.7环视 256
15.2.8匹配模式 256
15.2.9捕获分组的引用 257
15.3正则API简介 257
15.3.1 Regexp 257
15.3.2 Regexp.matcb(text) 259
15.3.3 Regexp.quote(text)和Regexp.escape(text) 260
15.3.4 String.index(Regexp) 261
15.3.5 String.scan(Regexp) 261
15.3.6 String.slice(Regexp) 262
15.3.7 String.split(Regexp) 262
15.3.8 String.sub(Regexp, Str) 263
15.3.9 String.gsub(Regexp, String) 264
15.4常用操作示例 264
15.4.1验证 264
15.4.2提取 265
15.4.3替换 265
15.4.4切分 265
15.5 Ruby 1.9的新变化 266
第16章 Linux/UNIX 268
16.1 POSIX 268
16.1.1 POSIX规范 268
16.1.2 POSIX字符组 269
16.2 vi 271
16.2.1字符组及简记法 271
16.2.2量词 272
16.2.3多选结构和捕获分组 272
16.2.4环视 273
16.2.5锚点和单词边界 273
16.2.6替换操作的特殊字符 274
16.2.7 replacement中的特殊变量 276
16.2.8补充 276
16.3 grep 277
16.3.1基本用法 277
16.3.2字符组 277
16.3.3锚点和单词边界 278
16.3.4量词 278
16.3.5多选结构和捕获分组 279
16.3.6 options 279
16.3.7 egrep和fgrep 280
16.3.8补充 280
16.4 awk 281
16.4.1基本用法 281
16.4.2字符组及简记法 282
16.4.3锚点和单词边界 283
16.4.4量词 283
16.4.5多选结构 284
16.4.6补充 284
16.5 sed 284
16.5.1基本用法 284
16.5.2字符组及简记法 285
16.5.3锚点和单词边界 285
16.5.4量词 286
16.5.5多选结构和捕获分组 286
16.5.6 options 286
16.5.7补充 287
16.6总结 288
附录A常用语言中正则特性一览 291
附录B常用的正则表达式 293
附录C常用的正则表达式工具及资源 309