具体描述
《学习正则表达式》从正则表达式的基本概念讲起,到编写完整的sed和Perl脚本,再到转换HTML文件,将这种强大的工具解释得清晰透彻。书中贯穿了大量简洁明了的示例,旨在让读者轻松掌握正则表达式。此外,书中各在线和桌面工具一应俱全,并介绍了进阶参考资料,是一本不可多得的正则表达式入门好书。《学习正则表达式》适合对正则表达式感兴趣的程序员和互联网从业者。
作者简介
Michael Fitzgerald 知名程序员、顾问、技术作家,为O’Reilly以及John Wiley & Sons编写过十余本技术图书,在O’Reilly Network上发表了大量文章。他曾是针对XML的RELAX NG模式语言委员会的成员。
目录信息
前言 IX
第1章 什么是正则表达式 1
1.1 从Regexpal开始 2
1.2 匹配北美电话号码 3
1.3 用字符组来匹配数字 4
1.4 使用字符组简写式 5
1.5 匹配任意字符 5
1.6 捕获分组和后向引用 6
1.7 使用量词 6
1.8 括选文字符 8
1.9 应用举例 9
1.10 本章所学 11
1.11 相关资源 11
第2章 简单的模式匹配 13
2.1 匹配字符串字面值 15
2.2 匹配数字 15
2.3 匹配非数字字符 17
2.4 匹配单词和非单词字符 18
2.5 匹配空白符 19
2.6 再谈匹配任意字符 21
2.7 给文本加标签 23
2.7.1 用sed为文本加标签 24
2.7.2 用Perl为文本加标签 25
2.8 本章所学 26
2.9 相关资源 27
第3章 边界 29
3.1 行的起始与结束 30
3.2 单词边界与非单词边界 31
3.3 其他锚位符 33
3.4 使用元字符的字面值 34
3.5 添加标签 35
3.5.1 使用sed添加标签 36
3.5.2 使用Perl添加标签 37
3.6 本章所学 38
3.7 相关资源 39
第4章 选择、分组和后向引用 41
4.1 选择操作 41
4.2 子模式 45
4.3 捕获分组和后向引用 46
4.4 非捕获分组 49
4.5 本章所学 50
4.6 相关资源 51
第5章 字符组 53
5.1 字符组取反 55
5.2 并集与差集 56
5.3 POSIX字符组 58
5.4 本章所学 60
5.5 相关资源 60
第6章 匹配Unicode和其他字符 61
6.1 匹配Unicode字符 62
6.2 用八进制数匹配字符 65
6.3 匹配Unicode字符属性 66
6.4 匹配控制字符 68
6.5 本章所学 70
6.6 相关资源 70
第7章 量词 73
7.1 贪心、懒惰和占有 74
7.2 用*、+和?进行匹配 74
7.3 匹配特定次数 75
7.4 懒惰量词 77
7.5 占有量词 78
7.6 本章所学 79
7.7 相关资源 79
第8章 环视 81
8.1 正前瞻 81
8.2 反前瞻 84
8.3 正后顾 85
8.4 反后顾 85
8.5 本章所学 86
8.6 相关资源 86
第9章 用HTML标记文档 87
9.1 匹配标签 87
9.2 用sed转换普通文本 89
9.2.1 用sed进行替换 89
9.2.2 用sed处理罗马数字 90
9.2.3 用sed处理特定段落 91
9.2.4 用sed处理多行诗文 91
9.3 追加标签 92
9.4 用Perl转换普通文本 94
9.4.1 用Perl处理罗马数字 95
9.4.2 用Perl处理特定段落 96
9.4.3 用Perl处理多行诗文 96
9.4.4 使用Perl命令文件 97
9.5 本章所学 99
9.6 相关资源 99
第10章 初级班毕业了 101
10.1 想上中级班 103
10.2 工具、实现程序以及程序库 103
10.2.1 Perl 103
10.2.2 PCRE 104
10.2.3 Ruby(Oniguruma) 104
10.2.4 Python 105
10.2.5 RE2 105
10.3 匹配北美电话号码 105
10.4 匹配电子邮件地址 106
10.5 本章所学 106
附录 正则表达式参考 107
术语表 118
索引 122
作者及封面简介 124
· · · · · · (收起)
读后感
关于书的内容,一个字:水。不知道douban上为啥对此书的评价这么高?莫非都是对正则毫无概念的读者? 这本书比好多博客的内容写的还不如,不过对于入门的来说,看看也无坏处就是。对于有点编程经验的程序员来说,建议入门还是直接看对应语言的库的介绍,然后着手练习即可。比...
这本书的定位是想了解正则表达式的新人。内容也确实简单,就是一些概念的罗列,两三种不同环境下的实现,书很薄,空白区域不少,一般可以花几个小时慢慢看完。如果这书籍能作为博客文章发表就好了。 了解必要的基础以便知道正则表达式工具一般会提供什么样的功能,以后...
这本书只有152页,而且正文的比例还不到一半!尽管如此,它还是较为系统介绍了RegExp知识体系,而且用精炼的语言准确阐述了RegExp知识体系中的术语如captured group, look around等,我认为这本书在传达RegExp的知识方面还是比较称职的。RegExp毕竟是每一个程序员需要了解的东...
# 学习正则表达式 > 摘自《学习正则表达式》 kindle版 1. 正则表达式最早出现于美国数学家斯蒂芬·克莱尼编写的Introduction to Metamathematics一书中(1952年Van Nostrand公司出版)。 2. `egrep`使用了扩展的正则表达式(ERE)并引入了更多的元字符,比如|、+、?、(、)。...
本书作为一本超级入门书,但凡有点正则表达式经验的人都是没有必要看的。而且即使作为入门,本书也不是很理想的一本。知识点零散,如果你对这正表达式一点不熟,相信我,看完这本书以后你还是不懂正则表达式
用户评价
《学习正则表达式》这本书,可以说是一本“工具书”和“思想启蒙书”的完美结合。它不仅提供了丰富、准确的正则表达式语法知识,更重要的是,它引导我思考如何运用这些知识来解决实际问题。作者在书中非常注重“上下文”和“场景”的理解。例如,在讲解“锚点”时,作者详细说明了如何使用“^”和“$”来匹配行的开始和结束,以及如何使用“”来匹配单词的边界。这些细节看似微小,但在实际应用中却至关重要,能够帮助我们精确地定位到需要匹配的文本片段。书中还穿插了许多关于“优化”的建议,比如如何避免使用过于复杂的嵌套,如何选择最合适的量词,以及如何利用“非捕获组”来提高效率等等。这些宝贵的经验,是仅凭阅读官方文档难以获得的。通过这本书的学习,我不仅掌握了正则表达式的强大功能,更重要的是,我学会了一种“模式识别”和“逻辑思维”的方式,这种能力可以迁移到其他编程领域,极大地提升了我的问题解决能力。
《学习正则表达式》这本书,就像一个经验丰富的向导,带领我深入探索了文本匹配的复杂世界。在接触这本书之前,我总是觉得正则表达式像是一个黑盒子,知道它能做什么,但具体怎么做,以及为什么这样做,却是一知半解。这本书的出现,彻底颠覆了我的看法。作者用一种非常清晰和结构化的方式,将正则表达式的各个组成部分进行拆解,然后又将它们巧妙地重新组合,展示了其强大的生命力。我特别欣赏书中关于“先行断言”和“零宽断言”的章节,这部分内容通常是初学者容易感到困惑的难点,但作者通过生动的比喻和大量的实例,让我理解了它们是如何在不消耗字符的情况下进行条件判断的。例如,“先行断言”可以用来查找后面跟着特定模式的字符,而“负先行断言”则可以用来排除那些后面跟着特定模式的字符。这些技巧在很多复杂的文本处理场景中都至关重要,比如在抓取网页数据时,需要精确地定位某些元素,但又不能将这些定位的条件包含在最终提取的内容中。这本书让我真正理解了“精确”和“灵活”是如何在正则表达式中完美结合的。
我一直认为,学习编程语言的关键在于理解其底层逻辑,《学习正则表达式》这本书正是遵循了这一原则。作者在书中并没有停留在简单的“如何使用”层面,而是深入挖掘了正则表达式引擎的工作原理,以及各种元字符是如何被解析和执行的。例如,书中对“回溯”机制的阐述,虽然有些深奥,但作者通过形象的比喻,将这个复杂的概念具象化,让我理解了在匹配过程中,当遇到不匹配时,引擎是如何“后退”并尝试其他路径的。这对于理解为什么某些表达式会导致性能问题,以及如何编写更优化的表达式,具有极其重要的指导意义。此外,书中关于“分组”的讲解,也让我对正则表达式的“捕获”能力有了更深的认识。作者详细讲解了如何使用括号来创建捕获组,并且如何在匹配结果中引用这些捕获组,这在从大量文本中提取特定信息时,是不可或缺的技能。这本书的价值在于,它不仅教会了我如何“写”正则表达式,更重要的是,它教会了我“思考”正则表达式,让我能够理解不同表达式的优劣,并根据实际需求设计出最高效、最准确的模式。
我必须说,《学习正则表达式》这本书彻底改变了我对文本处理的认知。在此之前,我总是依赖那些相对笨拙的字符串操作函数,比如查找、替换、分割,但这些方法在面对复杂、多变的文本模式时,显得捉襟见肘,效率低下。而这本书,则为我打开了一扇通往高效文本处理的大门。作者在书中不仅详细讲解了各种元字符的含义和用法,更重要的是,它教会了我如何将这些元字符组合起来,构建出能够精确匹配甚至“理解”文本结构的强大模式。我特别喜欢书中关于“字符类”和“预定义字符类”的章节,它让我认识到,原来只需要几个简单的符号,就能代表一大类字符,极大地简化了表达式的编写。还有关于“锚点”的讲解,它让我理解了如何精确控制匹配的位置,无论是行首、行尾,还是单词边界,都能游刃有余。书中提供的那些实战案例,更是让我受益匪浅。比如,如何在日志文件中快速定位特定错误信息,如何从网页源代码中提取所需的链接和数据,如何对大量的配置文件进行批量修改等等,这些在现实开发中遇到的棘手问题,通过正则表达式都能迎刃而解。这本书让我感到,学习正则表达式不再是枯燥的记忆过程,而是一场逻辑推理和模式构建的智力游戏,每一次成功的匹配,都带来一种成就感。
在阅读《学习正则表达式》这本书的过程中,我最大的感受就是作者对于细节的极致追求。本书并非简单地罗列各种语法规则,而是将每一种符号、每一个概念都进行了深入的剖析,并且解释了它们在不同场景下的行为。例如,关于“转义字符”的运用,作者不仅说明了它如何用来匹配那些本身具有特殊含义的字符,还详细讲解了在不同编程语言和环境中,转义字符的实际表现可能会有细微的差异,这对于避免潜在的bug至关重要。书中的“量词”部分,我印象尤其深刻。作者将“*”、“+”、“?”、“{n}”、“{n,}”、“{n,m}”这些量词的用法以及它们与“贪婪”和“非贪婪”修饰符的组合,进行了非常系统和详尽的讲解。通过大量不同复杂度的例子,我逐渐掌握了如何精确控制匹配的数量,无论是一次、一次或多次,还是一个范围内的任意次数,都能找到最合适的表达方式。这本书让我明白,正则表达式的强大之处,恰恰在于其精细的控制能力,而这种能力,正是通过对每一个细节的透彻理解才能获得的。
《学习正则表达式》这本书,对于我这样一个对文本处理情有独钟的人来说,无疑是一次知识的盛宴。在阅读之前,我对正则表达式的印象还停留在一些基础的字符串匹配,比如查找特定的单词或者数字。但这本书,将我带入了更广阔的天地。我尤其赞赏作者对于“字符集”和“范围”的讲解,它让我认识到,如何用最简洁的代码来匹配一类字符,例如,[a-z]可以匹配所有小写字母,[0-9]可以匹配所有数字。更进一步,作者还介绍了“预定义字符类”,如d表示数字,s表示空白字符,w表示单词字符,这些极大地简化了表达式的编写。这本书还非常注重实践,书中提供了大量贴近实际开发场景的例子,比如如何验证电子邮件地址的格式,如何从URL中提取域名,如何对日志文件进行解析等等。通过这些例子,我不仅学会了正则表达式的语法,更学会了如何将其运用到实际工作中,解决那些曾经让我头疼不已的文本处理难题。阅读此书,仿佛获得了一把“万能钥匙”,打开了文本处理的无数可能性。
作为一名对细节有着苛刻要求的读者,《学习正则表达式》这本书无疑满足了我对一本优秀技术书籍的所有期待。作者在讲解每一个概念时,都力求做到“言必有据,事必有证”,通过大量的代码示例和运行结果,清晰地展示了各种正则表达式元字符的实际效果。我特别欣赏书中对“字符类”的细致分类,不仅介绍了基础的字母、数字、空白字符,还深入讲解了如何自定义字符集,以及如何使用“排除集”来匹配不包含特定字符的文本。这让我能够构建出更加精确和灵活的匹配模式。此外,书中对“分组”和“捕获”的讲解也让我耳目一新。我之前只知道括号可以用来分组,但不知道它还能用来“捕获”匹配到的内容,并且可以在后续的表达式中引用这些捕获的内容,这在很多数据提取和替换的场景中都非常有用。这本书不仅仅是一本关于正则表达式的书,它更是一本关于如何用精确的逻辑去描述和操作文本的书,让我对编程的理解又上升了一个层次。
在我看来,《学习正则表达式》这本书最出色的地方在于其“循序渐进”的学习路径。作者深知正则表达式是一个由浅入深的领域,因此,他并没有一开始就抛出那些令人眼花缭乱的复杂语法,而是从最基础的字符匹配开始,逐步引入数量词、分组、选择等概念,并且在每一个阶段都提供了大量的示例来巩固学习。我尤其喜欢书中关于“限定符”的讲解,它让我明白,如何使用“*”、“+”、“?”以及花括号 {} 来精确控制匹配的次数,无论是零次、一次,还是一次或多次,甚至一个固定的范围,都能通过这些限定符来实现。更重要的是,作者还区分了“贪婪匹配”和“非贪婪匹配”,并解释了它们之间的区别和应用场景,这一点对于新手来说至关重要,能够避免很多不必要的麻烦。这本书给我带来的最大改变,就是让我不再畏惧那些看起来复杂的正则表达式,反而能够自信地去构建它们,并且能够理解别人编写的正则表达式。它让我的代码更加简洁、高效,并且在处理文本数据时,拥有了前所未有的掌控力。
作为一名长期与文本打交道的开发者,《学习正则表达式》这本书无疑是一本我相见恨晚的宝藏。它不是那种泛泛而谈的入门教程,而是真正深入到了正则表达式的精髓,并且用一种非常易于理解的方式呈现出来。我特别欣赏书中对于“分组”和“捕获组”的讲解,它让我明白,不仅仅是匹配,正则表达式还能“提取”信息,这在数据解析和信息挖掘领域具有极其重要的意义。作者通过各种巧妙的例子,展示了如何使用捕获组来获取我们真正需要的部分,并且如何利用反向引用来构建更复杂的匹配逻辑。此外,书中对于“回溯”机制的讲解,虽然有些抽象,但作者通过图示和通俗的语言,让我对正则表达式的匹配过程有了更清晰的认识,也帮助我理解了为何有些表达式会非常慢,以及如何优化它们。我曾尝试过其他一些关于正则表达式的资料,但往往是看完一遍就忘,或者无法真正理解其背后的原理,而这本书则不同,它注重培养读者的“思维方式”,让你能够举一反三,自己去构建和理解更复杂的模式。这本书我已经不止一次地翻阅,每一次都能有新的收获,它已经成为我日常开发中必不可少的一本参考书。
这本《学习正则表达式》就像一位循循善诱的老师,将原本令人望而生畏的字符匹配艺术,化为了一场充满逻辑与乐趣的探索之旅。在翻开这本书之前,我脑海中的正则表达式总是和那些长长的、令人眼花缭乱的符号组合划等号,仿佛是某种神秘的咒语,难以理解,更遑论掌握。然而,作者以一种极其巧妙的方式,层层剥茧,循序渐进地将我们引入这个强大的工具的世界。从最基础的字符匹配,到数量词、分组、选择,再到更复杂的先行断言和零宽断言,每一个概念的引入都伴随着清晰的定义、详实的解释,以及一系列精心设计的示例。更重要的是,作者不仅仅停留在理论讲解,而是深入探讨了这些概念在实际编程中的应用场景,比如如何在文本文件中查找特定模式、如何验证用户输入的数据格式、如何进行复杂的文本替换等等。我尤其欣赏书中对“贪婪”与“非贪婪”匹配的细致区分,这常常是新手容易混淆的地方,而书中通过生动的例子,彻底厘清了它们的区别和适用范围。读完之后,我不再对那些长串的字符感到恐惧,反而能够自信地运用它们来解决实际问题,甚至开始享受这种“玩弄”字符的乐趣。这本书的价值,远不止于知识的传授,更在于它点燃了我对编程的探索热情,让我看到了代码背后隐藏的巨大能量。
入门书籍
入门书籍
入门读物中的入门读物,不仅仅是有点正则水平的人不该看这本书,应该是有一点点粗浅计算机知识都完全可以不看。
模式虽然很强大,但作为非自然语言,还是记不住,用时再查吧
通俗易懂老少皆宜的了解正则表达式如何使用的书籍,可以花几小时看看。