学习正则表达式
本书通过示例介绍如何编写正则表达式,旨在让读者轻松掌握正则表达式。事实上,笔者几乎将所涉及的每一个概念都通过示例展示了出来,读者很容易模仿尝试。
正则表达式有助于找到文本字符串中的各种模式。更确切地说,正则表达式是经过专门编写的文本字符串,用来匹配字符串(尤其是文件内字符串)集合中符合该模式的所有字符串。
正则表达式最早出现于美国数学家斯蒂芬·克莱尼编写的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独树一帜的招牌特色。——编者注
大多数正则表达式实现各有异同。本书不会逐一讨论它们的差异,但也会涉及一些。如果要我把所有实现的全部不同点都列出来,恐怕非得把我累吐了血不行。所以我在本书中就不纠缠这些细节了。总而言之,如果你期待一本正则表达式的入门书,那就选这本吧。
-
Sandboxie—沙盘工具,隔离出一块区域允许任何软件运行
当我们从网上下载一些软件、文件、压缩包的时候,如果担心安装后有病毒、木马、广告、捆绑软件等垃圾信息,那么就可以考虑将软件安装在「沙盘工具」中 784 0 21-09-04 -
天下足球网 - |足球下载|NBA比赛下载|天下足球下载|英超下载|欧冠下载|足球比分|NBA比分|足球录像|NBA录像|足球论坛|NBA论坛
天下足球网算是比较老牌的足球资源站,如果想下载足球与篮球相关的赛事这也是一个选择。天下足球网有一个板块可以找到很多经典比赛的英文解... 1061 0 25-01-10 -
Apo-AI (GPT4模型) AI人工智能聊天软件
Apo-AI安卓版是一款功能先进的AI人工智能聊天软件APP,Apo-AI付费版借助先进的ChatGРТ4.0模型与Chatbot AI聊天助理提出任何问题并获得即... 945 0 24-12-12 -
新东方在线考研英语课堂笔记
01.复习_可不用下载【英一】图画作文开头段.pdf01.带练讲义【英一】图画作文开头段.docx01.带练讲义【英一】图画作文开头段.pdf01.英一真题... 942 0 24-08-20 -
向日葵远程控制软件SunloginClient_11.0.0
向日葵远程控制软件是一款阳光的远程控制软件,获得微软认证,界面友好,简单易用,安全放心,且身材迷你小巧。配合向日葵开机棒,还可支持... 422 0 21-07-07 -
推荐7款免费好用的国内外服务器传输工具
推荐7款国内外服务器传输工具,包括WinSCP、MobaXterm、Termius、OpenSSH、Dropbear SCP、Cyberduck和FileZilla。这些工具支持FTP、SFTP等... 861 0 25-03-04 -
时间日期选择控件
329 0 21-06-02 -
Bandizip—无广告超强压缩软件
作为电脑上必装的软件之——压缩工具,不少小伙伴使用的压缩软件用起来还算可以,但是时不时弹出一个“谜之操作”的广告让你触不及防,而且安装的时候说“无广告”,一不小心就安装了各种垃圾软件,而且动不动劫持浏览器主页,虽然可以卸载+重新设置,伤害不高,污辱性极强。 772 0 21-09-04
发表我的评论
- 这篇文章还没有收到评论,赶紧来抢沙发吧~