新闻资讯
看你所看,想你所想

精通正则表达式(第3版)

精通正则表达式(第3版)

精通正则表达式(第3版)

《精通正则表达式(第3版)》主要讲解了正则表达式的特性和流派、匹配原理、最佳化原则、实用诀窍以及调校措施,并详细介绍了在Perl、Java、.NET、PHP中正则表达式的用法。

基本介绍

  • 书名:精通正则表达式(第3版)
  • 作者:佛瑞德(Friedl.J.E.F)
  • 译者:余晟
  • ISBN:9787121046841, 7121046849
  • 页数:515页
  • 出版社:电子工业出版社
  • 出版时间:2009年7月1日
  • 装帧:平装
  • 开本:16

内容简介

随着网际网路的迅速发展,几乎所有工具软体和程式语言都支持的正则表达式也变得越来越强大和易于使用。《精通正则表达式(第3版)》是讲解正则表达式的经典之作。《精通正则表达式(第3版)》主要讲解了正则表达式的特性和流派、匹配原理、最佳化原则、实用诀窍以及调校措施,并详细介绍了在Perl、Java、.NET、PHP中正则表达式的用法。
《精通正则表达式(第3版)》自第1版开始着力于教会读者 “以正则表达式来思考”,来让读者真正“精通”正则表达式。该版对PHP的相关内容、Java1.5和Java1.6的新特性作了可观的扩充讲解。任何有机会使用正则表达式的读者都将因《精通正则表达式(第3版)》而受益匪浅。

编辑推荐

《精通正则表达式(第3版)》讲解正则表达式,这种工具能够提高工作效率、让生活变得更轻鬆。精心调校后的正则表达式只需要十多秒就能完成以前数小时才能完成的枯燥任务。如今,正则表达式已经成为众多语言及工具——Perl、PHP、Java、Python、Ruby、MysQL、VB-NET和c#(以及.NETFramework中的任何语言)——中的标準特性,依靠它,你能以之前完全不敢构想的方式进行複杂而精巧的文本处理。十年三版,再显王者风範,近30年开发经验的智慧结晶,深入理解正则表达式,彻底修炼基本功,全球第一本全面深入讲解正则表达式的经典巨着,《程式设计师》杂誌技术主编孟岩鼎力推荐。
专家点评:《精通正则表达式》是系统学习正则表达式的唯一最权威着作。任何时候,任何地方,只要提到正则表达式着作,人们都会提到这本书。该书质量之高,声誉之盛,使得几乎没有人企图挑战它的地位,从而在正则表达式图书领域形成了独特的“一夫当关”的局面,称其为正则表达式圣经,绝对当之无愧。
——《程式设计师》杂誌技术主编孟岩
《精通正则表达式(第3版)》包含了对PHP及其正则表达式的讲解。这一版的更新也反映了其他语言的发展,深入讲解了Sun的java.util.regex,并特别提到了Java1.4.2和Java1.5/1.6之间的众多差异。
本书的内容:
·各种语言和工具的功能比较
·正则引擎的工作原理
·最佳化(能节省大量的时间)
·準确匹配期望的文本
·针对具体语言的章节
《精通正则表达式(第3版)》,以明晰轻鬆的笔调向程式设计师深入浅出地讲解複杂的知识,并给出了现实世界中複杂问题的解决办法,读者能够立刻运用书中丰富的知识,巧妙而高效地解决各种问题。

作者简介

作者:(美国)佛瑞德(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上:http://regex-info/blog。

目录

前言
第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的嵌套正确性
索引

相关推荐

声明:此文信息来源于网络,登载此文只为提供信息参考,并不用于任何商业目的。如有侵权,请及时联系我们:yongganaa@126.com