书籍详情

正则指引(第2版)

正则指引(第2版)

作者:余晟 著

出版社:电子工业出版社

出版时间:2018-10-01

ISBN:9787121351303

定价:¥89.00

购买这本书可以去
内容简介
  《正则指引(第2版)》综合作者自己遇到的实际问题,以及其他开发人员咨询的问题,总结出一套巧妙运用正则表达式的办法,并通过具体的例子指导读者拆解、分析问题。《正则指引(第2版)》分为三部分:第一部分主要讲解正则表达式的基础知识,涵盖了正则表达式中常见的各种功能和结构;第二部分主要讲解关于正则表达式的更深入的知识,详细探讨了编码问题、匹配原理、解题思路;第三部分将之前介绍的各种知识落实到常用语言.NET、Java、JavaScript、PHP、Python、Ruby、Objective-C、Golang中,在详细介绍了在这些语言中正则表达式的具体用法之外,还辨析了版本之间的细微差异。《正则指引(第2版)》既可以作为专门的学习用书,也可以作为备查的参考手册。
作者简介
  余晟,非正统型技术爱好者,有多年研发经验,目前在在线教育行业从事研发与架构管理的工作。在强调技术追求的同时,倡导全面、完整的技术路线和技术文化,业余写作、翻译、审校了若干技术图书。个人公众号为“余晟以为”(yurii-says)。
目录
部分 
第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 常用量词 ............... 19 
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 非捕获分组 ........... 55 
3.5 补充....................... 56 
3.5.1 转义 .......... 56 
3.5.2 URL Rewrite ................................ 56 
3.5.3 一个例子... 58 
第4章 断言 ...................60 
4.1 单词边界 ............... 60 
4.2 行起始/结束位置 .. 62 
4.3 环视....................... 69 
4.4 补充....................... 75 
4.4.1 环视的价值 .................................. 75 
4.4.2 环视与分组编号 .......................... 76 
4.4.3 环视的支持程度 .......................... 77 
4.4.4 环视的组合 .................................. 79 
4.4.5 断言和反向引用之间的关系 ...... 81 
4.4.6 逆序环视的诡异之处 .................. 81 
第5章 匹配模式 ............83 
5.1 不区分大小写模式与模式的指定方式 .. 83 
5.2 单行模式 ............... 86 
5.3 多行模式 ............... 87 
5.4 注释模式 ............... 89 
5.5 补充....................... 91 
5.5.1 更多的模式 .................................. 91 
5.5.2 修饰符的作用范围 ...................... 91 
5.5.3 失效修饰符 .................................. 92 
5.5.4 模式与反向引用 .......................... 93 
5.5.5 冲突策略... 93 
5.5.6 哪种方式更好 .............................. 94 
第6章 其他 ...................95 
6.1 转义....................... 95 
6.1.1 字符串转义与正则转义 .............. 95 
6.1.2 元字符的转义 .............................. 99 
6.1.3 彻底消除元字符的特殊含义 .... 101 6.1.4 字符组中的转义 ........................ 103  6.2 正则表达式的处理形式 ........................ 103 
6.2.1 函数式处理 ................................ 104 
6.2.2 面向对象式处理 ........................ 104 
6.2.3 比较 ........ 105 
6.2.4 线程安全性 ................................ 106 
6.3 表达式中的优先级 ................................ 108 
6.4 回车和换行 ......... 109 
第二部分 
第7章 Unicode ...........112 
7.1 基础知识 ............. 112 
7.2 关于编码 ............. 115 
7.3 尽量使用Unicode编码 ........................ 116 
7.4 Unicode与字符组简记法 ..................... 120 
7.5 规范化问题 ......... 122 
7.6 单词边界 ............. 123 
7.7 码值转义序列 ..... 125 
7.8 Unicode属性 ...... 127 
7.8.1 Unicode Property ....................... 128 
7.8.2 Unicode Block ........................... 128 
7.8.3 Unicode Script ........................... 129 
7.9 Unicode属性列表 ................................. 130 
7.9.1 Unicode Property ....................... 130 
7.9.2 Unicode Block ........................... 131 
7.9.3 Unicode Script ........................... 135 
7.10 POSIX字符组 .. 135 
7.11 Emoji ................. 136 
第8章 匹配原理 ..........138 
8.1 有穷自动机 ......... 138 
8.2 正则表达式的匹配过程 ........................ 139 
8.3 回溯..................... 142 
8.4 NFA和DFA ....... 144  第9章 常见问题的解决思路 ...........................146 
9.1 关于元素的三种逻辑 ............................ 146 
9.1.1 必须出现. 147 
9.1.2 可能出现. 147 
9.1.3 不能出现. 148 
9.2 正则表达式的常见操作 ........................ 150 
9.2.1 提取 ........ 150 
9.2.2 验证 ........ 156 
9.2.3 替换 ........ 160 
9.2.4 切分 ........ 165 
9.3 正则表达式的优化建议 ........................ 167 
9.3.1 使用缓存. 167 
9.3.2 尽量准确地表达意图 ................ 168 
9.3.3 避免重复匹配 ............................ 168 
9.3.4 独立出文本和锚点 .................... 169 
9.4 别过分依赖正则表达式 ........................ 170 
9.4.1 彻底放弃字符串操作 ................ 170 
9.4.2 思维定式. 171 
9.4.3 正则表达式可以匹配各种文本 172 
9.4.4 滥用正则表达式 ........................ 173 
第三部分 
第10章 .NET ..............176 
10.1 预备知识 ........... 176 
10.2 正则功能详解 ... 177 
10.2.1 列表 .... 177 
10.2.2 字符组 178 
10.2.3 Unicode属性 ......................... 178 
10.2.4 字符组简记法........................ 179 
10.2.5 单词边界 ............................... 179 
10.2.6 行起始/结束位置 .................. 180 
10.2.7 环视 .... 181 
10.2.8 匹配模式 ............................... 181 
10.2.9 捕获分组的引用 .................... 182  10.3 正则API简介 .. 183 
10.3.1 Regex .. 183 
10.3.2 Match .. 187 
10.4 常用操作示例 ... 188 
10.4.1 验证 .... 188 
10.4.2 提取 .... 189 
10.4.3 替换 .... 189 
10.4.4 切分 .... 190 
第11章 Java ..............191 
11.1 预备知识 ........... 191 
11.2 正则功能详解 ... 192 
11.2.1 列表 .... 192 
11.2.2 字符组. 192 
11.2.3 Unicode属性 ......................... 194 
11.2.4 字符组简记法 ........................ 194 
11.2.5 单词边界 ................................ 194 
11.2.6 行起始/结束位置 ................... 195 
11.2.7 环视 .... 196 
11.2.8 匹配模式 ................................ 196 
11.2.9 纯文本模式 ............................ 197 
11.2.10 捕获分组的引用 .................. 197 
11.3 正则API简介 .. 197 
11.3.1 Pattern . 198 
11.3.2 Matcher .................................. 200 
11.3.3 String ... 203 
11.4 常用操作示例 ... 204 
11.4.1 验证 .... 204 
11.4.2 提取 .... 204 
11.4.3 替换 .... 205 
11.4.4 切分 .... 206 
11.5 Java 8和Java 9的新改进 ................... 206 
11.5.1 Java 8的新改进 ..................... 206 
11.5.2 Java 9的新改进 ..................... 207  第12章 JavaScript .....208 
12.1 预备知识 ........... 208 
12.2 正则功能详解 ... 209 
12.2.1 列表 .... 209 
12.2.2 字符组 210 
12.2.3 字符组简记法........................ 211 
12.2.4 单词边界 ............................... 211 
12.2.5 行起始/结束位置 .................. 212 
12.2.6 环视 .... 212 
12.2.7 匹配模式 ............................... 213 
12.2.8 捕获分组的引用 .................... 214 
12.3 正则API简介 .. 215 
12.3.1 RegExp 215 
12.3.2 String ... 218 
12.4 常用操作示例 ... 221 
12.4.1 验证 .... 221 
12.4.2 提取 .... 222 
12.4.3 替换 .... 223 
12.4.4 切分 .... 223 
12.5 关于ActionScript ................................ 223 
12.5.1 RegExp 223 
12.5.2 匹配规则 ............................... 224 
12.5.3 匹配模式 ............................... 224 
12.5.4 正则API ................................ 224 
第13章 PHP ...............225 
13.1 预备知识 ........... 225 
13.2 正则功能详解 ... 227 
13.2.1 列表 .... 227 
13.2.2 字符组 228 
13.2.3 Unicode属性 ......................... 229 
13.2.4 字符组简记法........................ 229 
13.2.5 单词边界 ............................... 230 
13.2.6 行起始/结束位置 .................. 230 
13.2.7 环视 .... 231 
13.2.8 匹配模式 ............................... 231 13.2.9 纯文本模式 ........................... 232 
13.2.10 捕获分组的引用 .................. 232 
13.3 正则API简介 .. 233 
13.3.1 PREG 常量说明 ................... 233 
13.3.2 preg_quote ............................. 235 
13.3.3 preg_ grep .............................. 235 
13.3.4 preg_match ............................. 236 
13.3.5 preg_match_all ....................... 237 
13.3.6 preg_last_error ....................... 239 
13.3.7 preg_replace ........................... 239 
13.3.8 preg_replace_callback ............ 240 
13.3.9 preg_filter ............................... 240 
13.3.10 preg_split ............................. 241 
13.3.11 preg_replace_callback_array 242 
13.4 常见的正则操作举例 .......................... 243 
13.4.1 验证 .... 243 
13.4.2 提取 .... 243 
13.4.3 替换 .... 244 
13.4.4 切分 .... 244 
第14章 Python ...........245 
14.1 预备知识 ........... 245 
14.2 正则功能详解 ... 246 
14.2.1 列表 .... 246 
14.2.2 字符组 247 
14.2.3 Unicode属性 ......................... 248 
14.2.4 字符组简记法........................ 249 
14.2.5 单词边界 ............................... 250 
14.2.6 行起始/结束位置 .................. 251 
14.2.7 环视 .... 252 
14.2.8 匹配模式 ............................... 252 
14.2.9 捕获分组的引用 .................... 253 
14.2.10 条件匹配 ............................. 253 
14.3 正则API简介 .. 254 
14.3.1 RegexObject ........................... 254 
14.3.2 re.compile(regex[, flags]) ....... 255  14.3.3 re.search(pattern, string[, flags]) ............................... 256 
14.3.4 MatchObject ........................... 256 
14.3.5 re.match(pattern, string[, flags]) ................................ 257 
14.3.6 re.findall(pattern, string[, flags]) ............................... 258 
14.3.7 re.finditer(pattern, string[, flags]) .............................. 258 
14.3.8 re.split(pattern, string[, maxsplit=0, flags=0]) .......... 259 
14.3.9 re.sub(pattern, repl, string[, count, flags]) ................. 259 
14.4 常用操作示例 ... 260 
14.4.1 验证 .... 260 
14.4.2 提取 .... 261 
14.4.3 替换 .... 262 
14.4.4 切分 .... 262 
第15章 Ruby ..............263 
15.1 预备知识 ........... 263 
15.2 正则功能详解 ... 264 
15.2.1 列表 .... 264 
15.2.2 字符组 264 
15.2.3 Unicode属性 ......................... 265 
15.2.4 字符组简记法........................ 266 
15.2.5 单词边界 ............................... 266 
15.2.6 行起始/结束位置 .................. 267 
15.2.7 环视 .... 268 
15.2.8 匹配模式 ............................... 268 
15.2.9 捕获分组的引用 .................... 269 
15.3 正则API简介 .. 269 
15.3.1 Regexp 269 
15.3.2 Regexp.match(text) ................ 271 
15.3.3 Regexp.quote(text)和Regexp.escape(text) ............... 272 
15.3.4 String.index(Regexp) ............. 273 
15.3.5 String.scan(Regexp) ............... 273 
15.3.6 String.slice(Regexp) ............... 274 
15.3.7 String.split(Regexp) ............... 274 
15.3.8 String.sub(Regexp, Str) .......... 275 
15.3.9 String.gsub(Regexp, String) ... 276 
15.4 常用操作示例 ... 276 15.4.1 验证 .... 276 
15.4.2 提取 .... 277 
15.4.3 替换 .... 277 
15.4.4 切分 .... 277 
15.5 Ruby 1.9的新变化 .............................. 278 
第16章 Objective-C ..280 
16.1 预备知识 ........... 280 
16.2 正则功能详解 ... 282 
16.2.1 列表 .... 282 
16.2.2 字符组 283 
16.2.3 Unicode属性 ......................... 284 
16.2.4 字符组简记法........................ 284 
16.2.5 单词边界 ............................... 285 
16.2.6 行起始/结束位置 .................. 286 
16.2.7 环视 .... 287 
16.2.8 匹配模式 ............................... 287 
16.2.9 纯文本模式 ........................... 288 
16.2.10 捕获分组的引用 .................. 289 
16.2.11 命名分组 .............................. 290 
16.3 正则API简介 .. 291 
16.3.1 predicateWithFormat .............. 291 
16.3.2 rangeOfString ......................... 292 
16.3.3 regularExpressionWithPattern 292 
16.3.4 initWithPattern ....................... 292 
16.3.5 pattern . 293 
16.3.6 numberOfCaptureGroups ....... 293 
16.3.7 numberOfMatchesInString ..... 293 
16.3.8 stringByReplacingMatchesInString .......................... 294 
16.3.9 replacingMatchesInString ...... 294 
16.3.10 escapedPatternForString ...... 294 
16.3.11 escapedTemplateForString ... 295 
16.4 常用操作示例 ... 295 
16.4.1 验证 .... 295 
16.4.2 提取 .... 295  16.4.3 替换 .... 297 
16.4.4 切分 .... 298 
第17章 Golang...........299 
17.1 预备知识 ........... 299 
17.2 正则功能详解 ... 301 
17.2.1 列表 .... 301 
17.2.2 字符组 301 
17.2.3 Unicode属性 ......................... 302 
17.2.4 字符组简记法........................ 303 
17.2.5 单词边界 ............................... 303 
17.2.6 行起始/结束位置 .................. 303 
17.2.7 环视 .... 304 
17.2.8 匹配模式 ............................... 304 
17.2.9 纯文本模式 ........................... 305 
17.2.10 捕获分组的引用 .................. 305 
17.2.11 命名分组 .............................. 306 
17.3 正则API简介 .. 307 
17.3.1 Compile和MustCompile ...... 307 
17.3.2 MatchString ........................... 308 
17.3.3 FindString .............................. 308 
17.3.4 FindAllString ......................... 309 
17.3.5 FindStringIndex ..................... 309 
17.3.6 FindAllStringIndex ................ 309 
17.3.7 FindStringSubmatch .............. 309 
17.3.8 FindAllStringSubmatch ......... 310 
17.3.9 SubexpNames ........................ 310 
17.3.10 Split ... 311 
17.3.11 ReplaceAllString .................. 311 
17.3.12 ReplaceAllLiteralString ....... 312 
17.4 常用操作示例 ... 312 
17.4.1 验证 .... 312 
17.4.2 提取 .... 312 
17.4.3 替换 .... 313 
17.4.4 切分 .... 313  第18章 Linux/UNIX ....314 
18.1 POSIX ............... 314 
18.1.1 POSIX规范 ........................... 314 
18.1.2 POSIX字符组 ....................... 316 
18.2 vi ....................... 317 
18.2.1 字符组及简记法 .................... 317 
18.2.2 量词 .... 318 
18.2.3 多选结构和捕获分组 ............ 319 
18.2.4 环视 .... 319 
18.2.5 锚点和单词边界 .................... 319 
18.2.6 替换操作的特殊字符 ............ 320 
18.2.7 replacement中的特殊变量 ... 322 
18.2.8 补充 .... 322 
18.3 grep ................... 323 
18.3.1 基本用法 ............................... 323 
18.3.2 字符组 324 
18.3.3 锚点和单词边界 .................... 324 
18.3.4 量词 .... 324 
18.3.5 多选结构和捕获分组 ............ 325 
18.3.6 options . 325 
18.3.7 egrep和fgrep ........................ 326 
18.3.8 补充 .... 327 
18.4 awk .................... 327 
18.4.1 基本用法 ............................... 327 
18.4.2 字符组及简记法 .................... 328 
18.4.3 锚点和单词边界 .................... 329 
18.4.4 量词 .... 329 
18.4.5 多选结构 ............................... 330 
18.4.6 补充 .... 330 
18.5 sed ..................... 330 
18.5.1 基本用法 ............................... 330 
18.5.2 字符组及简记法 .................... 331 
18.5.3 锚点和单词边界 .................... 331 
18.5.4 量词 .... 332 
18.5.5 多选结构和捕获分组 ............ 332 18.5.6 options . 333 
18.5.7 补充 .... 333 
18.6 总结................... 334 
附录A 常用语言中正则特性一览 ....................337 
附录B 常用的正则表达式 ...............................340 
附录C 常用的正则表达式工具及资源 .............356 
正则表达式术语中英文对照表 ...........................363 
猜您喜欢

读书导航