内容简介
随着互联网的迅速发展,几乎所有工具软件和程序语言都支持的正则表达式也变得越来越强大和易于使用。《精通正则表达式(第3版)》是讲解正则表达式的经典之作。《精通正则表达式(第3版)》主要讲解了正则表达式的特性和流派、匹配原理、优化原则、实用诀窍以及调校措施,并详细介绍了在Perl、Java、.NET、PHP中正则表达式的用法。
《精通正则表达式(第3版)》自第1版开始着力于教会读者“以正则表达式来思考”,来让读者真正“精通”正则表达式。该版对PHP的相关内容、Java1.5和Java1.6的新特性作了可观的扩充讲解。任何有机会使用正则表达式的读者都将因《精通正则表达式(第3版)》而受益匪浅。
各种语言和工具的功能比较
正则引擎的工作原理
优化(能节省大量的时间)
准确匹配期望的文本
针对具体语言的章节
《精通正则表达式(第3版)》,以明晰轻松的笔调向程序员深入浅出地讲解复杂的知识,并给出了现实世界中复杂问题的解决办法,读者能够立刻运用书中丰富的知识,巧妙而高效地解决各种问题。
图书目录
前言
|
第1章正则表达式入门
|
解决实际问题
|
作为编程语言的正则表达式
|
以文件名做类比
|
以语言做类比
|
正则表达式的思维框架
|
对于有部分经验的读者
|
检索文本文件:Egrep
|
Egrep元字符
|
行的起始和结束
|
字符组
|
用点号匹配任意字符
|
多选结构
|
忽略大小写
|
单词分界符
|
小结
|
可选项元素
|
其他量词:重复出现
|
括号及反向引用
|
神奇的转义
|
基础知识拓展
|
语言的差异
|
正则表达式的目标
|
更多的例子
|
正则表达式术语汇总
|
改进现状
|
总结
|
一家之言
|
第2章入门示例拓展
|
关于这些例子
|
Perl简单入门
|
使用正则表达式匹配文本
|
向实用的程序前进
|
成功匹配的副作用
|
错综复杂的正则表达式
|
暂停片刻
|
使用正则表达式修改文本
|
例子:公函生成程序
|
举例:修整股票价格
|
自动的编辑操作
|
处理邮件的小工具
|
用环视功能为数值添加逗号
|
Text-to-HTML转换
|
回到单词重复问题
|
第3章正则表达式的特性和流派概览
|
在正则的世界中漫步
|
正则表达式的起源
|
最初印象
|
正则表达式的注意事项和处理方式
|
集成式处理
|
程序式处理和面向对象式处理
|
查找和替换
|
其他语言中的查找和替换
|
注意事项和处理方式:小结
|
字符串,字符编码和匹配模式
|
作为正则表达式的字符串
|
字符编码
|
Unicode
|
正则模式和匹配模式
|
常用的元字符和特性
|
字符表示法
|
字符组及相关结构
|
锚点及其他“零长度断言”
|
注释和模式量词
|
分组,捕获,条件判断和控制
|
高级话题引导
|
第4章:表达式的匹配原理
|
发动引擎
|
两类引擎
|
新的标准
|
正则引擎的分类
|
几句题外话
|
测试引擎的类型
|
匹配的基础
|
关于范例
|
规则1:优先选择最左端的匹配结果
|
引擎的构造
|
规则2:标准量词是匹配优先的
|
表达式主导与文本主导
|
NFA引擎:表达式主导
|
DFA引擎:文本主导
|
第一想法:比较NFA与DFA
|
回溯
|
真实世界中的例子:面包屑
|
回溯的两个要点
|
备用状态
|
回溯与匹配优先
|
关于匹配优先和回溯的更多内容
|
匹配优先的问题
|
多字符“引文”
|
使用忽略优先量词
|
匹配优先和忽略优先都期望获得匹配
|
匹配优先、忽略优先和回溯的要旨
|
占有优先量词和固化分组
|
占有优先量词,?+、*+、++和{m,n}+
|
环视的回溯
|
多选结构也是匹配优先的吗
|
发掘有序多选结构的价值
|
NFA、DFA和POSIX
|
最左最长规则
|
POSIX和最左最长规则
|
速度和效率
|
小结:NFA与DFA的比较
|
总结
|
第5章:正则表达式实用技巧
|
正则表达式的平衡法则
|
若干简单的例子
|
匹配连续行(续前)
|
匹配IP地址
|
处理文件名
|
匹配对称的括号
|
防备不期望的匹配
|
匹配分隔符之内的文本
|
了解数据,做出假设
|
去除文本首尾的空白字符
|
HTML相关范例
|
匹配HTMLTag
|
匹配HTMLLink
|
检查HTTPURL
|
验证主机名
|
在真实世界中提取URL
|
扩展的例子
|
保持数据的协调性
|
解析CSV文件
|
第6章:打造高效正则表达式
|
典型示例
|
稍加修改——先迈最好使的腿
|
效率vs准确性
|
继续前进——限制匹配优先的作用范围
|
实测
|
全面考查回溯
|
POSIXNFA需要更多处理
|
无法匹配时必须进行的工作
|
看清楚一点
|
多选结构的代价可能很高
|
性能测试
|
理解测量对象
|
PHP测试
|
Java测试
|
VB-NET测试
|
Ruby测试
|
Python测试
|
Tcl测试
|
常见优化措施
|
有得必有失
|
优化各有不同
|
正则表达式的应用原理
|
应用之前的优化措施
|
通过传动装置进行优化
|
优化正则表达式本身
|
提高表达式速度的诀窍
|
常识性优化
|
将文字文本独立出来
|
将锚点独立出来
|
忽略优先还是匹配优先?具体情况具体分析
|
拆分正则表达式
|
模拟开头字符识别
|
使用固化分组和占有优先量词
|
主导引擎的匹配
|
消除循环
|
方法1:依据经验构建正则表达式
|
真正的“消除循环”解法
|
方法2:自顶向下的视角
|
方法3:匹配主机名
|
观察
|
使用固化分组和占有优先量词
|
简单的消除循环的例子
|
消除C语言注释匹配的循环
|
流畅运转的表达式
|
引导匹配的工具
|
引导良好的正则表达式速度很快完工
|
总结:开动你的大脑
|
第7章:Perl
|
作为语言组件的正则表达式
|
Perl的长处
|
Perl的短处
|
Perl的正则流派
|
正则运算符和正则文字
|
正则文字的解析方式
|
正则修饰符
|
正则表达式相关的Perl教义
|
表达式应用场合
|
动态作用域及正则匹配效应
|
匹配修改的特殊变量
|
qr//运算符与regex对象
|
构建和使用regex对象
|
探究regex对象
|
用regex对象提高效率
|
Match运算符
|
Match的正则运算元
|
指定目标运算元
|
Match运算符的不同用途
|
迭代匹配:ScalarContext,不使用/g
|
Match运算符与环境的关系
|
Substitution运算符
|
运算元replacement
|
/e修饰符
|
应用场合与返回值
|
Split运算符
|
Split基础知识
|
返回空元素
|
Split中的特殊Regex运算元
|
Split中带捕获型括号的match运算元
|
巧用Perl的专有特性
|
用动态正则表达式结构匹配嵌套结构
|
使用内嵌代码结构
|
在内嵌代码结构中使用local函数
|
关于内嵌代码和my变量的忠告
|
使用内嵌代码匹配嵌套结构
|
正则文字重载
|
正则文字重载的问题
|
模拟命名捕获
|
效率
|
办法不只一种
|
表达式编译、/o修饰符、qr/···/和效率
|
理解“原文”副本
|
Study函数
|
性能测试
|
正则表达式调试信息
|
结语
|
第8章:Java
|
Java的正则流派
|
Java对p{}和P{}的支持
|
Unicode行终结符
|
使用java.util.regex
|
ThePattern.compile()Factory
|
Pattern的matcher方法
|
Matcher对象
|
应用正则表达式
|
查询匹配结果
|
简单查找-替换
|
高级查找-替换
|
原地查找-替换
|
Matcher的检索范围
|
方法链
|
构建扫描程序
|
Matcher的其他方法
|
Pattern的其他方法
|
Pattern的split方法,单个参数
|
Pattern的split方法,两个参数
|
拓展示例
|
为ImageTag添加宽度和高度属性
|
对于每个Matcher,使用多个Pattern校验HTML
|
解析CSV文档
|
Java版本差异
|
1.4.2和1.5.0之间的差异
|
1.5.0和1.6之间的差异
|
第9章:.NET
|
.NET的正则流派
|
对于流派的补充
|
使用.NET正则表达式
|
正则表达式快速入门
|
包概览
|
核心对象概览
|
核心对象详解
|
创建Regex对象
|
使用Regex对象
|
使用Match对象
|
使用Group对象
|
静态“便捷”函数
|
正则表达式缓存
|
辅助函数
|
.NET高级话题
|
正则表达式装配件
|
匹配嵌套结构
|
Capture对象
|
第10章:PHP
|
PHP的正则流派
|
Preg函数接口
|
“Pattern”参数
|
Preg函数罗列
|
preg_match
|
preg_match_all
|
preg_replace
|
preg_replace_callback
|
preg_split
|
preg_grep
|
preg_quote
|
“缺失”的preg函数
|
preg_regex_to_pattern
|
对未知的Pattern参数进行语法检查
|
对未知正则表达式进行语法检查
|
递归的正则表达式
|
匹配嵌套括号内的文本
|
不能回溯到递归调用之内
|
匹配一组嵌套的括号
|
PHP效率
|
模式修饰符S:“研究”
|
扩展示例
|
用PHP解析CSV
|
检查taggeddata的嵌套正确性
|
索引
|
编辑推荐
《精通正则表达式(第3版)》讲解正则表达式,这种工具能够提高工作效率、让生活变得更轻松。精心调校后的正则表达式只需要十多秒就能完成以前数小时才能完成的枯燥任务。如今,正则表达式已经成为众多语言及工具——Perl、PHP、Java、Python、Ruby、MysQL、VB-NET和c#(以及.NETFramework中的任何语言)——中的标准特性,依靠它,你能以之前完全不敢设想的方式进行复杂而精巧的文本处理。十年三版,再显王者风范,近30年开发经验的智慧结晶,深入理解正则表达式,彻底修炼基本功,全球第一本全面深入讲解正则表达式的经典巨著,《程序员》杂志技术主编孟岩鼎力推荐。
作品评价
《精通正则表达式》是系统学习正则表达式的唯一最权威著作。任何时候,任何地方,只要提到正则表达式著作,人们都会提到这本书。该书质量之高,声誉之盛,使得几乎没有人企图挑战它的地位,从而在正则表达式图书领域形成了独特的“一夫当关”的局面,称其为正则表达式圣经,绝对当之无愧。
——《程序员》杂志技术主编孟岩
作者简介
作者:(美国)佛瑞德(Friedl.J.E.F)译者:余晟
Jeffrey E.F.Friedl生长于俄亥俄州Rootstown的乡村,小时候希望成为天文学家,直到有一天他发现了闲置在化学实验室角落里的TRS-80 Model I(装备了整整16KB RAM)。1980年他终于开始使用Unix(和正则表达式)。在肯特(Kent)大学和新罕布什尔(New Hampshire)大学分别获得计算机学士和硕士学位之后,他在日本京都工作了8年,为欧姆龙公司(Omron Corporation)进行核心开发,1997年迁居硅谷,在当时还不为人知的Yahoo!用正则表达式处理财经新闻和数据。2004年4月他偕妻儿返回京都。
Friedl的闲暇时间很充裕,这时候他喜欢与妻子Fumie和3岁的活蹦乱跳的儿子Anthony一起。他还喜欢拍摄遍布京都的美景,照片在他的blog上
相关词条
相关搜索
其它词条