精通正则表达式

当前位置:首页 > 网络编程 > 编程语言与程序设计 > 精通正则表达式

出版社:电子工业出版社
出版日期:2007
ISBN:9787121046841
作者:Jeffrey E. F. Friedl
页数:515页

作者简介

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

书籍目录

前言
第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年开发经验的智慧结晶,深入理解正则表达式,彻底修炼基本功,全球第一本全面深入讲解正则表达式的经典巨著,《程序员》杂志技术主编孟岩鼎力推荐。  专家点评:《精通正则表达式》是系统学习正则表达式的唯一最权威著作。任何时候,任何地方,只要提到正则表达式著作,人们都会提到这本书。该书质量之高,声誉之盛,使得几乎没有人企图挑战它的地位,从而在正则表达式图书领域形成了独特的“一夫当关”的局面,称其为正则表达式圣经,绝对当之无愧。  ——《程序员》杂志技术主编孟岩    《精通正则表达式(第3版)》包含了对PHP及其正则表达式的讲解。这一版的更新也反映了其他语言的发展,深入讲解了Sun的java.util.regex,并特别提到了Java1.4.2和Java1.5/1.6之间的众多差异。  本书的内容:  ·各种语言和工具的功能比较  ·正则引擎的工作原理  ·优化(能节省大量的时间)  ·准确匹配期望的文本  ·针对具体语言的章节  《精通正则表达式(第3版)》,以明晰轻松的笔调向程序员深入浅出地讲解复杂的知识,并给出了现实世界中复杂问题的解决办法,读者能够立刻运用书中丰富的知识,巧妙而高效地解决各种问题。

内容概要

  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一起。他还喜欢拍摄遍布京都的美景,照片在他的。

媒体关注与评论

  “如果你的工作需要用到正则表达式(即便你已经有本很不错的关于开发语言的书),我还是要向你强烈推荐本书。”  ——Dr.Chris Brown.Linux FOrmat  “毫不夸张地说,《精通正则表达式(第3版)》是学习该工具的不二选择,也是每个程序员必备的杰作。”  ——JasOn Menard.JaVa Ranch  “所有关于正则表达式的书中,找不到比这更好的了。”   ——Zak Greant.Planet PHP

图书封面


 精通正则表达式下载 更多精彩书评



发布书评

 
 


精彩书评 (总计26条)

  •     若论入门,《正则表达式必知必会》之类的书比这本书讲得简明易懂。若单说Perl的正则表达式,《Progamming Perl》比本书讲得权威。这本书涵括的语言包括Perl、Java、.NET、PHP,但是我相信很少有人同时用这几种语言编程的。我以为本书比较有价值的部分是第6章:打造高效的正则表达式。正则表达式会写容易,写出高效的难。但是对于本书的翻译虽然外界认为很好,但是我却不敢苟同。
  •     这本书讲了不少关于正则表达式引擎的东西,并且花费了很大力气讲解基于回溯的NFA引擎。好像回溯是实现正则引擎的唯一算法。事实上,有很多更高效的算法,我自己就实现过一个正则引擎,专门针对正则表达式集合的匹配,也就是说,给定很多个正则表达式(比如100万个),对输入仅扫描一遍,就能知道匹配了“哪些”正则表达式。对于这个问题,基于回溯的算法是无能为力的。这个需求在实际中有非常广泛的应用,在大多数情况下,程序员都会通过一些技巧去避免这个问题,比如抽取在正则中必然会出现的字符串,先过滤一遍,缩小搜索范围,然后在过滤后的小集合中逐个匹配。所以,对于这本书中讲到的正则引擎部分,了解一下即可,不要太过认真。
  •     此书虽然没讲正则引擎是如何实现的。但对任何一个想灵活应用正则表达式的程序员了来说是必不可少的!看了此书之后大多数情况狂再不用去互联网上问某某正则表达式怎么写了!

精彩短评 (总计58条)

  •     相见恨晚哪!
  •     繁琐而无聊……
  •     经典。好多年没出新版了。
  •     从理论到应用
  •     强烈推荐,只要把第一部看完,你就会发现自己离精通正则表达式不远了。真正深入浅出的高手进阶教程。
  •     重读第二遍,NICE!
  •     对正则表达式有了一个基础且底层的认识
  •     掌握正则而不是单纯会用的进阶书,大师之作。真正掌握是自己实现一个正则解释器。
  •     没什么感觉。
  •     实话实话
  •     几年前买的了,看完了,很详细,不过翻译版本看着会有些吃力,若认真毅力看下去的话,收获是很大的,随着自身水平的提高,每次重新翻阅都会发现之前没注意到的知识点,适合深度研究正则的开发人使用
  •     不错,是本好书,还没有仔细看
  •     正则入门书籍, 有理论有实例, 非常好.
  •     有些术语有点奇怪,我还是接受,零宽度断言,负向零宽度断言之类的术语.
  •     动物园三本阅读顺序:蝙蝠->简单熟悉一下regex,猫头鹰->原理深入, 老鼠->更多例子和细节加强记忆
  •     以前缺书,现在终于买到了。
  •     (文本)字符串的数据类型的操作的方法--形式代数-不懂英语(单词,句子,大意),但是仅仅理解字节和行。正则表达式的语法,实际上是一种轻量级、简洁、适用于特定领域的编程语言
  •     古老的经典书,大而全的正则表达式,甚至Java、.NET等里面如何使用正则表达式也有,
  •     ^(?>regex)$
  •     主要介绍NFA正则引擎,一般大多数类库都是NFA引擎。最好的是第四章,介绍NFA引擎原理,其他章节也不错。
  •     是会覆盖到自己之前不懂的地方。但是,不得不说,翻译的一般|抑或原书本来就废话比较多-总之觉得不够紧凑-信息密度不大。不过,只看过一遍,这类实战类的,还是得自己多编编后再来看|边用边看更靠谱些。
  •     考参书
  •     中文版有些地方翻译的比较糟糕,例如把greedy翻译成匹配优先,atomic grouping翻译成固化分组。还是应该看英文版
  •     书是早就知道,还放在ipad里面,但是一直没怎么看,直到有一天和同事聊天,他说这本书不读简直没法和同行打招呼。别人的话我一笑而过,他的话不敢不听,连忙当晚就去阅读。读毕,惊觉这是我读过最好的技术书籍之一,有原理、有方法的书不少,但是还要有思想,这就很难了。难在思想、原理和方法的结合,这本书做到了。
  •     其实不算看完,不过实在看不下去了,以后再来回顾一下吧~
  •     其实这是一本很好的从入门到精通系列的书籍,尤其是对正则表达式内部实现机制的分析很到位,学知识讲究的就是个知其然还要知其所以然。另外它也是一本很好的工具书,正则表达式这种东西不用就忘,真是忘了拿起来翻翻非常方便~
  •     前面几章看看就足以应付大部分设计和应用了
  •     作者从事多年正则方面的工作,从玩Egrep和perl中的正则到现在各种语言中的正则,对正则的历史变更了如指掌,对此技术是绝对的权威,我强烈建议学习正则的朋友阅读此书! 作者用心良苦,为了引导读者去思考,特意将提问的答案放在下一页!作者以讲故事的形式来写作此书,以大白话来讲述技术,文字功底很好,翻译的质量也是上层! 此书浅显易懂,读起来兴趣昂然!
  •     今年读完完整读完的第一本技术书籍,断断续续读了一个月吧,才知道原来正则表达式里面有那么多学问。 起初是写爬虫需要,在网上断断续续的搜索一些介绍正则表达式的文章,后面就就想系统的学习下,于是买了这本书。 读完一遍,受益良多,特别是看到实现原理的时候,就是编译原理中学过的啊,结果愣是完全记不起来了。 也明白了原来正则表达式中有那么多的流派,解除了心中那么多年的疑问。 浅浅的一遍阅读,必然还有很多未看明白的地方,等等实践一段时间,再回过头来学习吧
  •     归根结底就是熟悉自己使用的正则表达式流派,了解自己要处理的文本,清楚自己要什么,不要什么。 感觉前4章收获最大,5-6两章花了很大时间弄懂,但傻乎乎的去优化正则表达式只会导致写出一次性的东西(还不一定有机器优化的好)
  •     不错的书,很受益。推荐
  •     500多页的书,除了讲perl、java那些没看,基本上都过了一遍,其中某些东西讲的确实很好,比如NFA、DFA以及其中的回溯,很精彩。以前学算法的时候也涉及到这些理论的知识,所以理解起来相对而言简单一些。感觉这些东西还是很有应用价值的。
  •     在学习了30分钟入门正则表达式之后再学习本书,了解正则表达式的原理,4、6章尤为重要!
  •     很不错的书!Oreilly的书都很经典!
  •     学习的只是没有很好的在实际工作中使用起来,用的最多的就是在grep中
  •     极为实用,便于抓取信息
  •     看了C1 C2 C3 C4 C7 C8 匹配原理木有看懂 .net估计这辈子不大会用。。。。
  •     书买了太多了,不想再写评价了。
  •     不会正则的程序员,都不敢大声说话
  •     非常棒! 正则的心法
  •     正则表达式,我学会的第一件计算机内容,文档搜索起来快了很多
  •     经典翻译版本
  •     这本书对读者异常的友好,但在内容上我只是蜻蜓点水。
  •     掌握了正则表达式做事效率是要突破天际啊!!! 非常非常非常重要的工具!!!
  •     看了前六章,剩下的没有读完
  •     当工具书又过了,当原理书又过了。一半一半吧。
  •     了解了不少正则表达式的高级内容,部分内容还涉及到RE的原理机制,不过可能为照顾读者,原理的解释都是从应用层面进行,不够深入,若对这方面感兴趣,建议读读自动机相关的专著和Rux关于Re Engine的几篇博文
  •     书中正则表达式用法以读,但关于正则表达式的机制不懂。
  •     CS262。perl部分翻译这么烂,居然还自称翻译好。码农的英文和中文水平是有多低啊
  •     精通的节奏,语言部分看了perl和java,前面效率讲的很好,需要自己好好理解和应用
  •     渣翻译,读了前6章
  •     为什么我看完第三章后还是不清楚如何匹配中文。。。
  •     你值得拥有!
  •     看完前6章
  •     计算机专业必读
  •     阿西吧 我终于弄懂正则表达式了 后面几章没看
  •     读了前半部分,后面涉及到语音应用的暂时不需要。
  •     得反复读,反复实践
 

农业基础科学,时尚,美术/书法,绘画,软件工程/开发项目管理,研究生/本专科,爱情/情感,动漫学堂PDF下载,。 PDF下载网 

PDF下载网 @ 2024