学习正则表达式
本书通过示例介绍如何编写正则表达式,旨在让读者轻松掌握正则表达式。事实上,笔者几乎将所涉及的每一个概念都通过示例展示了出来,读者很容易模仿尝试。
正则表达式有助于找到文本字符串中的各种模式。更确切地说,正则表达式是经过专门编写的文本字符串,用来匹配字符串(尤其是文件内字符串)集合中符合该模式的所有字符串。
正则表达式最早出现于美国数学家斯蒂芬·克莱尼编写的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独树一帜的招牌特色。——编者注
大多数正则表达式实现各有异同。本书不会逐一讨论它们的差异,但也会涉及一些。如果要我把所有实现的全部不同点都列出来,恐怕非得把我累吐了血不行。所以我在本书中就不纠缠这些细节了。总而言之,如果你期待一本正则表达式的入门书,那就选这本吧。
-
黑客入侵的艺术
黑客也有优劣之分。很显然对他们的奖励之一是利用黑客手段非法入侵我们公司的安全站点或个人系统。另一种奖励可能是他们的黑客行为构成了黑... 901 0 24-05-24 -
教师资格结构化面试七大类型试题答题思路及试题解析
教师结构化面试问答中如何做好自我介绍.pdf教师资格结构化面试7大类型试题汇总.pdf教师资格考试面试白皮书.pdf教师资格证统考面试答辩六大... 779 0 24-08-19 -
12306 Bypass 分流抢票软件
12306 Bypass 分流抢票软件完全免费,支持全自动抢票、自动候补、整点抢购预售票以及稳定捡漏功能。它具有多种实用功能,如多天、多车次... 1391 0 25-02-04 -
牛牛盲盒商城微擎小程序源码带视频教程_可对接微信支付
打开一个盲盒前,你永远不知道里面是什么。但是一旦打开,就得为它买单。盲盒产品的属性多样化,市场需求不断扩大,目前正处于快速扩张的红... 1250 0 24-06-03 -
Windows Activation Key Viewer密钥查看器
有时候我们需要知道电脑的密钥方便以后更新激活系统,因为系统激活后是会隐藏密钥的,那么你就需要下载这款电脑密钥查看器(Windows Activa... 1225 0 24-05-31 -
hotbox 一个完全免费的音视频下载网站
hotbox 一个完全免费的视频下载网站,能够下载多个平台的视频文件,并且还支持自定义选择视频清晰度以及单独的音频下载。下载方法非常简单。还提供了不同质量的音视频文件。 2405 0 24-03-07 -
最牛ks视频评论采集软件v6.2
最牛ks视频评论采集软件可以帮助用户快速采集ks视频的评论,提供支持自定义采集视频评论,支持导出女或男,同时支持导出指定评论内容UID或... 379 0 21-07-06 -
滴滴拼车小程序
滴滴拼车微信小程序源码是一个用于开发类似滴滴出行的共享出行服务的应用程序代码库,它专为微信小程序平台设计。微信小程序是一种轻量级的... 1058 0 24-09-15
发表我的评论
- 这篇文章还没有收到评论,赶紧来抢沙发吧~