学习正则表达式
本书通过示例介绍如何编写正则表达式,旨在让读者轻松掌握正则表达式。事实上,笔者几乎将所涉及的每一个概念都通过示例展示了出来,读者很容易模仿尝试。
正则表达式有助于找到文本字符串中的各种模式。更确切地说,正则表达式是经过专门编写的文本字符串,用来匹配字符串(尤其是文件内字符串)集合中符合该模式的所有字符串。
正则表达式最早出现于美国数学家斯蒂芬·克莱尼编写的Introduction to Metamathematics一书中(1952年Van Nostrand公司出版)。但其实这个概念早在20世纪40年代初就已形成。到了70年代,随着Unix操作系统及其实用程序sed、grep等问世,正则表达式得到了计算机科学家更为广泛的使用。Unix操作系统是美国电话电报公司下属贝尔实验室的Brian Kernighan、Dennis Ritchie、Ken Thompson以及其他工作人员的杰作。
据我所知,最早出现正则表达式的计算机应用程序是QED编辑器。QED是Quick Editor的缩写,它是为运行在Scientific Data Systems公司〔1〕SDS 940计算机中的Berkeley Timesharing System编写的。1970年的记录显示,QED是由Ken Thompson在之前MIT的Compatible Time-Sharing System中另外一个编辑器基础上重写而成的。从此,计算技术领域有了真正的正则表达式实现。(附录中的表A-1列出了QED的正则表达式特性。)
〔1〕Scientific Data Systems(英文缩写SDS),是Max Palevsky于1961年在美国成立的一家计算机公司,也是最早在计算机设计中使用集成电路和硅晶体管的公司。SDS计算机主要针对大型科学计算,物美价廉。“太空竞赛”期间NASA曾购买了很多台SDS计算机。SDS在1969年被施乐(Xerox)公司收购,1975年由于管理不善和销售下滑被关闭。在施乐管理期间,该公司一度被称为XDS。——编者注
本书中用来展示示例的工具很多,但多数都容易获取,而且也很实用。只有少数工具目前还没有好用的Windows版本。如果你觉得哪个工具不好用,完全可以不用。但要真正学习正则表达式,我还是建议在Unix环境中学习。我使用Unix环境长达25年,每天仍然能够学到不少新东西。
“不懂Unix的人注定还要重新发明一个蹩脚的Unix。”——Henry Spencer〔2〕
〔2〕 Henry Spencer是加拿大程序员,著名正则表达式库regex的作者。这个正则表达式库被许多程序包或编程语言采用,比如Perl、Tcl和MySQL,等等。在多伦多大学工作期间,Henry Spencer从1981年开始运作美国之外的第一个Usernet站点。这个站点后来被谷歌收购,作为1980年代Usernet的公开档案。另外,他还写过“10 Commandments for C Programmers”(C程序员十诫,http://www.seebs.net/c/10com.html)。——编者注
部分工具可以通过浏览器在线使用,这对于许多读者是十分方便的。其余的工具需要使用命令行和shell脚本,还有一些工具是在桌面上运行的。如果你手头没有这些工具,从网上下载也很方便。其中大多数工具是免费的,偶尔有需要付费的也不贵。
本书中不会出现很多专业术语。我会在必要的时候告诉你正确的术语,但这种情况很少。因为多年的经验表明,专业术语常会造成障碍。换句话说,我会尽可能用通俗易懂的语言描述正则表达式,以免你晕头转向不知所措。因为本书的理念是“略知大概,即可实践”。
正则表达式的实现多种多样。你会发现在vi(vim)、grep及sed等Unix命令行工具中使用的正则表达式也可以在其他程序中见到。各种程序设计语言都支持正则表达式,比如Perl(当然啦〔3〕)、Java、JavaScript、C#、Ruby等。就连XSLT 2.0这样的声明式语言中也有正则表达式。你还会发现Notepad++、Oxygen及TextMate等应用程序同样支持正则表达式。
〔3〕 Perl,后来被人们解释为Practical Extraction and Reporting Language的缩写。由这个非官方的“全称”——实用提取和报告语言——可知,Perl在处理文本文件和生成报表方面是非常强大的。1987年,Larry Wall在美国宾夕法尼亚州蓝铃(Blue Bell)地区的Unisys公司当程序员的时候发明了Perl。在该语言后来的发展中,正则表达式功能得到不断丰富和加强,最终成为Perl独树一帜的招牌特色。——编者注
大多数正则表达式实现各有异同。本书不会逐一讨论它们的差异,但也会涉及一些。如果要我把所有实现的全部不同点都列出来,恐怕非得把我累吐了血不行。所以我在本书中就不纠缠这些细节了。总而言之,如果你期待一本正则表达式的入门书,那就选这本吧。
-
Photoshop古风背景素材
650 0 21-07-12 -
菲菲更名宝贝_FFRenamePro v4.0_批量文件处理工具
『菲菲更名宝贝』是一款优秀的批量更名软件和批量文件处理工具,是获奖软件。软件以功能强大著称,在国内文件处理和批量更名类软件中占有一... 2262 0 24-06-01 -
网站、公众号、小程序菜单栏目素材图标
549 0 21-07-14 -
magnetW - 磁力链接搜索引擎利器
magnetW 是一款开源的Mac磁力链接聚合搜索工具。磁力搜 For magnetW通过关键字词搜索时实反馈搜索结果,包含大小,时间,来源。可以配合... 1122 0 24-06-01 -
千亿像素看世界
网站记录了很多著名城市和景点的超大分辨率像素的全景图,像素高达1950亿,你可以随意放大缩小,你甚至可以看清路人的衣服是什么牌子的。 1100 0 21-11-27 -
什么是Web 3.0 ?
Web 3.0是最近非常火的一个概念了,就算你不知道他具体是什么,但是你也一定听说过这个名词。但是Web 3.0中又夹杂着很多其他的概念,比如... 1100 0 24-05-10 -
熊猫头表情包图片生成PHP源码
熊猫头图片表情斗图生成PHP源码,自适应的系统,手机也可以正常用!源码集成了搜狗搜索图片接口,可以一键搜索百万图片,还有表情制作等模块... 1632 0 24-06-02 -
扫码借阅系统小程序:PHP后端
《微信小程序扫码借阅系统:PHP后端源码解析》微信小程序作为移动应用开发的新趋势,凭借其轻量级、便捷的特性,受到了广大开发者和用户的... 830 0 24-09-19
发表我的评论
- 这篇文章还没有收到评论,赶紧来抢沙发吧~