展开全部

主编推荐语

文本自动化处理黑魔法,贴近中文世界。

内容简介

本书综合作者自己遇到的实际问题,以及其他开发人员咨询的问题,总结出一套巧妙运用正则表达式的办法,并通过具体的例子指导读者拆解、分析问题。全书分为三部分:第一部分主要讲解正则表达式的基础知识,涵盖了正则表达式中常见的各种功能和结构;第二部分主要讲解关于正则表达式的更深入的知识,详细探讨了编码问题、匹配原理、解题思路;第三部分将之前介绍的各种知识落实到常用语言.NET、Java、JavaScript、PHP、Python、Ruby、Objective-C、Golang中,在详细介绍了在这些语言中正则表达式的具体用法之外,还辨析了版本之间的细微差异。本书既可以作为专门的学习用书,也可以作为备查的参考手册。 本书适合经常需要进行文本处理(比如日志分析或网络运维)的技术人员、熟悉常用开发语言的程序员,以及已经对正则表达式有一定了解的读者阅读。

目录

  • 版权信息
  • 引子: 关于正则表达式……
  • 引入正则表达式
  • 引入正则表达式之后
  • 返璞归真 ——评《正则指引》
  • 克制我们内心的冲动
  • 前言
  • 本书结构
  • 本书的读者对象
  • 致谢
  • 读者服务
  • 第一部分
  • 第1章 字符组
  • 1.1 普通字符组
  • 1.2 关于Python的基础知识
  • 1.3 普通字符组(续)
  • 1.4 元字符与转义
  • 1.5 排除型字符组
  • 1.6 字符组简记法
  • 1.7 字符组运算
  • 1.8 POSIX字符组
  • 第2章 量词
  • 2.1 一般形式
  • 2.2 常用量词
  • 2.3 数据提取
  • 2.4 点号
  • 2.5 滥用点号的问题
  • 2.6 忽略优先量词
  • 2.7 转义
  • 第3章 括号
  • 3.1 分组
  • 3.2 多选结构
  • 3.3 引用分组
  • 3.3.1 反向引用
  • 3.3.2 各种引用的记法
  • 3.3.3 命名分组
  • 3.4 非捕获分组
  • 3.5 补充
  • 3.5.1 转义
  • 3.5.2 URL Rewrite
  • 3.5.3 一个例子
  • 第4章 断言
  • 4.1 单词边界
  • 4.2 行起始/结束位置
  • 4.3 环视
  • 4.4 补充
  • 4.4.1 环视的价值
  • 4.4.2 环视与分组编号
  • 4.4.3 环视的支持程度
  • 4.4.4 环视的组合
  • 4.4.5 断言和反向引用之间的关系
  • 4.4.6 逆序环视的诡异之处
  • 第5章 匹配模式
  • 5.1 不区分大小写模式与模式的指定方式
  • 5.2 单行模式
  • 5.3 多行模式
  • 5.4 注释模式
  • 5.5 补充
  • 5.5.1 更多的模式
  • 5.5.2 修饰符的作用范围
  • 5.5.3 失效修饰符
  • 5.5.4 模式与反向引用
  • 5.5.5 冲突策略
  • 5.5.6 哪种方式更好
  • 第6章 其他
  • 6.1 转义
  • 6.1.1 字符串转义与正则转义
  • 6.1.2 元字符的转义
  • 6.1.3 彻底消除元字符的特殊含义
  • 6.1.4 字符组中的转义
  • 6.2 正则表达式的处理形式
  • 6.2.1 函数式处理
  • 6.2.2 面向对象式处理
  • 6.2.3 比较
  • 6.2.4 线程安全性
  • 6.3 表达式中的优先级
  • 6.4 回车和换行
  • 第二部分
  • 第7章 Unicode
  • 7.1 基础知识
  • 7.2 关于编码
  • 7.3 尽量使用Unicode编码
  • 7.4 Unicode与字符组简记法
  • 7.5 规范化问题
  • 7.6 单词边界
  • 7.7 码值转义序列
  • 7.8 Unicode属性
  • 7.8.1 Unicode Property
  • 7.8.2 Unicode Block
  • 7.8.3 Unicode Script
  • 7.9 Unicode属性列表
  • 7.9.1 Unicode Property
  • 7.9.2 Unicode Block
  • 7.9.3 Unicode Script
  • 7.10 POSIX字符组
  • 7.11 Emoji
  • 第8章 匹配原理
  • 8.1 有穷自动机
  • 8.2 正则表达式的匹配过程
  • 8.3 回溯
  • 8.4 NFA和DFA
  • 第9章 常见问题的解决思路
  • 9.1 关于元素的三种逻辑
  • 9.1.1 必须出现
  • 9.1.2 可能出现
  • 9.1.3 不能出现
  • 9.2 正则表达式的常见操作
  • 9.2.1 提取
  • 9.2.2 验证
  • 9.2.3 替换
  • 9.2.4 切分
  • 9.3 正则表达式的优化建议
  • 9.3.1 使用缓存
  • 9.3.2 尽量准确地表达意图
  • 9.3.3 避免重复匹配
  • 9.3.4 独立出文本和锚点
  • 9.4 别过分依赖正则表达式
  • 9.4.1 彻底放弃字符串操作
  • 9.4.2 思维定式
  • 9.4.3 正则表达式可以匹配各种文本
  • 9.4.4 滥用正则表达式
  • 第三部分
  • 第10章 .NET
  • 10.1 预备知识
  • 10.2 正则功能详解
  • 10.2.1 列表
  • 10.2.2 字符组
  • 10.2.3 Unicode属性
  • 10.2.4 字符组简记法
  • 10.2.5 单词边界
  • 10.2.6 行起始/结束位置
  • 10.2.7 环视
  • 10.2.8 匹配模式
  • 10.2.9 捕获分组的引用
  • 10.3 正则API简介
  • 10.3.1 Regex
  • 10.3.1.1 Static String Escape(String text)
  • 10.3.1.2 String[] GetGroupNames()
  • 10.3.1.3 int[] GetGroupNumbers()
  • 10.3.1.4 bool IsMatch(String input)
  • 10.3.1.5 String Replace(String input, String replacement)
  • 10.3.1.6 String[] Split(String input)
  • 10.3.2 Match
  • 10.4 常用操作示例
  • 10.4.1 验证
  • 10.4.2 提取
  • 10.4.3 替换
  • 10.4.4 切分
  • 第11章 Java
  • 11.1 预备知识
  • 11.2 正则功能详解
  • 11.2.1 列表
  • 11.2.2 字符组
  • 11.2.3 Unicode属性
  • 11.2.4 字符组简记法
  • 11.2.5 单词边界
  • 11.2.6 行起始/结束位置
  • 11.2.7 环视
  • 11.2.8 匹配模式
  • 11.2.9 纯文本模式
  • 11.2.10 捕获分组的引用
  • 11.3 正则API简介
  • 11.3.1 Pattern
  • 11.3.1.1 static boolean matches(String regex, CharSequence input)
  • 11.3.1.2 String[] split(CharSequence text)
  • 11.3.1.3 String[] split(CharSequence text, int limit)
  • 11.3.1.4 static String quote(String text)
  • 11.3.2 Matcher
  • 11.3.2.1 String group(int n)
  • 11.3.2.2 String group()
  • 11.3.2.3 int groupCount()
  • 11.3.2.4 int start(n)
  • 11.3.2.5 int start()
  • 11.3.2.6 int end(n)
  • 11.3.2.7 int end()
  • 11.3.2.8 String replaceAll(String replacement)
  • 11.3.2.9 Matcher appendReplacement(StringBuffer sb, String replacement)
  • 11.3.2.10 Matcher appendTail(StringBuffer sb)
  • 11.3.3 String
  • 11.3.3.1 boolean matches(String regex)
  • 11.3.3.2 String replaceFirst(String regex, String replacement)
  • 11.3.3.3 String replaceAll(String regex, String replacement)
  • 11.3.3.4 String[] split(String regex)
  • 11.3.3.5 String[] split(String regex, int limit)
  • 11.4 常用操作示例
  • 11.4.1 验证
  • 11.4.2 提取
  • 11.4.3 替换
  • 11.4.4 切分
  • 11.5 Java 8和Java 9的新改进
  • 11.5.1 Java 8的新改进
  • 11.5.2 Java 9的新改进
  • 第12章 JavaScript
  • 12.1 预备知识
  • 12.2 正则功能详解
  • 12.2.1 列表
  • 12.2.2 字符组
  • 12.2.3 字符组简记法
  • 12.2.4 单词边界
  • 12.2.5 行起始/结束位置
  • 12.2.6 环视
  • 12.2.7 匹配模式
  • 12.2.8 捕获分组的引用
  • 12.3 正则API简介
  • 12.3.1 RegExp
  • 12.3.1.1 RegExp.exec(string)
  • 12.3.1.2 RegExp.test(string)
  • 12.3.2 String
  • 12.3.2.1 string.match(RegExp)
  • 12.3.2.2 string.search(RegExp)
  • 12.3.2.3 string.replace(RegExp, replacement)
  • 12.3.2.4 string.replace(RegExp, function)
  • 12.3.2.5 string.split(RegExp)
  • 12.4 常用操作示例
  • 12.4.1 验证
  • 12.4.2 提取
  • 12.4.3 替换
  • 12.4.4 切分
  • 12.5 关于ActionScript
  • 12.5.1 RegExp
  • 12.5.2 匹配规则
  • 12.5.3 匹配模式
  • 12.5.4 正则API
  • 第13章 PHP
  • 13.1 预备知识
  • 13.2 正则功能详解
  • 13.2.1 列表
  • 13.2.2 字符组
  • 13.2.3 Unicode属性
  • 13.2.4 字符组简记法
  • 13.2.5 单词边界
  • 13.2.6 行起始/结束位置
  • 13.2.7 环视
  • 13.2.8 匹配模式
  • 13.2.9 纯文本模式
  • 13.2.10 捕获分组的引用
  • 13.3 正则API简介
  • 13.3.1 PREG 常量说明
  • 13.3.1.1 PREG_PATTERN_ORDER
  • 13.3.1.2 PREG_SET_ORDER
  • 13.3.1.3 PREG_SPLIT_OFFSET_CAPTURE
  • 13.3.1.4 PREG_OFFSET_CAPTURE
  • 13.3.1.5 PREG_SPLIT_NO_EMPTY
  • 13.3.1.6 PREG_SPLIT_DELIMI_CAPTURE
  • 13.3.1.7 PREG_NO_ERROR
  • 13.3.1.8 PREG_INTERNAL_ERROR
  • 13.3.1.9 PREG_BACKTRACK_LIMIT_ERROR
  • 13.3.1.10 PREG_RECURSION_LIMIT_ERROR
  • 13.3.1.11 PREG_BAD_UTF8_ERROR
  • 13.3.1.12 PREG_BAD_UTF8_OFFSET_ERROR
  • 13.3.1.13 PCRE_VERSION
  • 13.3.2 preg_quote
  • 13.3.3 preg_ grep
  • 13.3.4 preg_match
  • 13.3.5 preg_match_all
  • 13.3.6 preg_last_error
  • 13.3.7 preg_replace
  • 13.3.8 preg_replace_callback
  • 13.3.9 preg_filter
  • 13.3.10 preg_split
  • 13.3.11 preg_replace_callback_array
  • 13.4 常见的正则操作举例
  • 13.4.1 验证
  • 13.4.2 提取
  • 13.4.3 替换
  • 13.4.4 切分
  • 第14章 Python
  • 14.1 预备知识
  • 14.2 正则功能详解
  • 14.2.1 列表
  • 14.2.2 字符组
  • 14.2.2.1 Python 2
  • 14.2.2.2 Python 3
  • 14.2.2.3 关于编码
  • 14.2.3 Unicode属性
  • 14.2.4 字符组简记法
  • 14.2.4.1 Python 2
  • 14.2.4.2 Python 3
  • 14.2.5 单词边界
  • 14.2.5.1 Python 2
  • 14.2.5.2 Python 3
  • 14.2.6 行起始/结束位置
  • 14.2.7 环视
  • 14.2.8 匹配模式
  • 14.2.9 捕获分组的引用
  • 14.2.10 条件匹配
  • 14.3 正则API简介
  • 14.3.1 RegexObject
  • 14.3.2 re.compile(regex[, flags])
  • 14.3.3 re.search(pattern, string[, flags])
  • 14.3.4 MatchObject
  • 14.3.5 re.match(pattern, string[, flags])
  • 14.3.6 re.findall(pattern, string[, flags])
  • 14.3.7 re.finditer(pattern, string[, flags])
  • 14.3.8 re.split(pattern, string[, maxsplit=0, flags=0])
  • 14.3.9 re.sub(pattern, repl, string[, count, flags])
  • 14.4 常用操作示例
  • 14.4.1 验证
  • 14.4.2 提取
  • 14.4.3 替换
  • 14.4.4 切分
  • 第15章 Ruby
  • 15.1 预备知识
  • 15.2 正则功能详解
  • 15.2.1 列表
  • 15.2.2 字符组
  • 15.2.3 Unicode属性
  • 15.2.4 字符组简记法
  • 15.2.5 单词边界
  • 15.2.6 行起始/结束位置
  • 15.2.7 环视
  • 15.2.8 匹配模式
  • 15.2.9 捕获分组的引用
  • 15.3 正则API简介
  • 15.3.1 Regexp
  • 15.3.2 Regexp.match(text)
  • 15.3.3 Regexp.quote(text)和Regexp.escape(text)
  • 15.3.4 String.index(Regexp)
  • 15.3.5 String.scan(Regexp)
  • 15.3.6 String.slice(Regexp)
  • 15.3.7 String.split(Regexp)
  • 15.3.8 String.sub(Regexp, Str)
  • 15.3.9 String.gsub(Regexp, String)
  • 15.4 常用操作示例
  • 15.4.1 验证
  • 15.4.2 提取
  • 15.4.3 替换
  • 15.4.4 切分
  • 15.5 Ruby 1.9的新变化
  • 第16章 Objective-C
  • 16.1 预备知识
  • 16.2 正则功能详解
  • 16.2.1 列表
  • 16.2.2 字符组
  • 16.2.3 Unicode属性
  • 16.2.4 字符组简记法
  • 16.2.5 单词边界
  • 16.2.6 行起始/结束位置
  • 16.2.7 环视
  • 16.2.8 匹配模式
  • 16.2.9 纯文本模式
  • 16.2.10 捕获分组的引用
  • 16.2.11 命名分组
  • 16.3 正则API简介
  • 16.3.1 predicateWithFormat
  • 16.3.2 rangeOfString
  • 16.3.3 regularExpressionWithPattern
  • 16.3.4 initWithPattern
  • 16.3.5 pattern
  • 16.3.6 numberOfCaptureGroups
  • 16.3.7 numberOfMatchesInString
  • 16.3.8 stringByReplacingMatchesInString
  • 16.3.9 replacingMatchesInString
  • 16.3.10 escapedPatternForString
  • 16.3.11 escapedTemplateForString
  • 16.4 常用操作示例
  • 16.4.1 验证
  • 16.4.2 提取
  • 16.4.3 替换
  • 16.4.4 切分
  • 第17章 Golang
  • 17.1 预备知识
  • 17.2 正则功能详解
  • 17.2.1 列表
  • 17.2.2 字符组
  • 17.2.3 Unicode属性
  • 17.2.4 字符组简记法
  • 17.2.5 单词边界
  • 17.2.6 行起始/结束位置
  • 17.2.7 环视
  • 17.2.8 匹配模式
  • 17.2.9 纯文本模式
  • 17.2.10 捕获分组的引用
  • 17.2.11 命名分组
  • 17.3 正则API简介
  • 17.3.1 Compile和MustCompile
  • 17.3.2 MatchString
  • 17.3.3 FindString
  • 17.3.4 FindAllString
  • 17.3.5 FindStringIndex
  • 17.3.6 FindAllStringIndex
  • 17.3.7 FindStringSubmatch
  • 17.3.8 FindAllStringSubmatch
  • 17.3.9 SubexpNames
  • 17.3.10 Split
  • 17.3.11 ReplaceAllString
  • 17.3.12 ReplaceAllLiteralString
  • 17.4 常用操作示例
  • 17.4.1 验证
  • 17.4.2 提取
  • 17.4.3 替换
  • 17.4.4 切分
  • 第18章 Linux/UNIX
  • 18.1 POSIX
  • 18.1.1 POSIX规范
  • 18.1.1.1 BRE
  • 18.1.1.2 ERE
  • 18.1.2 POSIX字符组
  • 18.2 vi
  • 18.2.1 字符组及简记法
  • 18.2.2 量词
  • 18.2.3 多选结构和捕获分组
  • 18.2.4 环视
  • 18.2.5 锚点和单词边界
  • 18.2.6 替换操作的特殊字符
  • 18.2.7 replacement中的特殊变量
  • 18.2.8 补充
  • 18.3 grep
  • 18.3.1 基本用法
  • 18.3.2 字符组
  • 18.3.3 锚点和单词边界
  • 18.3.4 量词
  • 18.3.5 多选结构和捕获分组
  • 18.3.6 options
  • 18.3.7 egrep和fgrep
  • 18.3.8 补充
  • 18.4 awk
  • 18.4.1 基本用法
  • 18.4.2 字符组及简记法
  • 18.4.3 锚点和单词边界
  • 18.4.4 量词
  • 18.4.5 多选结构
  • 18.4.6 补充
  • 18.5 sed
  • 18.5.1 基本用法
  • 18.5.2 字符组及简记法
  • 18.5.3 锚点和单词边界
  • 18.5.4 量词
  • 18.5.5 多选结构和捕获分组
  • 18.5.6 options
  • 18.5.7 补充
  • 18.6 总结
  • 附录A 常用语言中正则特性一览
  • 附录B 常用的正则表达式
  • 整数
  • 十六进制数
  • MD5字符串
  • 浮点数
  • 逗号分隔的整数
  • 中文字符
  • 中文间多余的空白字符
  • 价格
  • 手机号码
  • 固定电话号码
  • 邮政编码
  • 身份证号码
  • QQ号
  • ISBN号
  • IPv4地址
  • IPv6地址
  • 时间字符串
  • 日期字符串
  • Windows路径
  • UNIX路径
  • 主机名
  • 电子邮件地址
  • URL
  • HTML Entity
  • HTML tag
  • Title tag
  • 成对的tag
  • img tag
  • table tag
  • href tag
  • JavaScript代码
  • XML格式注释
  • 附录C 常用的正则表达式工具及资源
  • 在线类
  • RegexPal
  • Larsolavtorvik
  • ReWork
  • Nregex
  • Rubular
  • MyRegexp
  • RegExLib
  • Regular-Expressions
  • 软件类
  • Expresso
  • RegexBuddy
  • PowerGREP
  • JFLAP
  • RegexUtil
  • 正则表达式术语中英文对照表
展开全部

评分及书评

4.5
4个评分

出版方

电子工业出版社

电子工业出版社成立于1982年10月,是国务院独资、工信部直属的中央级科技与教育出版社,是专业的信息技术知识集成和服务提供商。经过三十多年的建设与发展,已成为一家以科技和教育出版、期刊、网络、行业支撑服务、数字出版、软件研发、软科学研究、职业培训和教育为核心业务的现代知识服务集团。出版物内容涵盖了电子信息技术的各个分支及工业技术、经济管理、科普与少儿、社科人文等领域,综合出版能力位居全国出版行业前列。