第4章 表达式的匹配原理
前一章在开头类比了正则表达式与汽车,余下的部分介绍了正则表达式的功能、特点以及其他相关信息。本章仍会使用这个类比来说明重要的正则引擎及其工作原理。
为什么需要了解这些原理呢?读者将会了解到,正则引擎分为很多种,最常用的引擎类型——Perl、Tcl、Python、.Net、Ruby、PHP,我见过的所有的Java正则包,以及其他语言使用的工作原理,基于此原理,构建正则表达式的方式决定了某个正则表达式能否匹配一个特定字符串,在何处匹配,以及匹配成功或报告失败的速度。如果你认为这些问题很重要,请阅读本章。
发动引擎
Start Your Engines!
现在我们来看看,引擎的类比能为我们提供多大帮助。引擎的价值在于,有了它,你不需要花多少气力就能从一个地方移动到另一个地方。驾驶员只需要放松或者听听音乐,发动机会完成余下的事情。它的主要任务就是驱动车轮,而驾驶员没必要关心它是如何工作的。是这样吗?
两类引擎
Two Kinds of Engines
设想一下驾驶电动汽车的情形?电动汽车已经诞生很久了,但它们不像汽油发动机驱动的汽车那样普及,因为电动汽车还不够成熟。如果你有辆电动汽车,请记住别给它加油。如果你的汽车采用汽油发动机,请务必远离烟火。电动机几乎总是“能够运行”,汽油机则需要多加保养。更换火花塞、空气过滤器,或者换用不同品牌的汽油,有可能大大提升发动机的效率。当然,也可能降低汽油机的性能,或者导致发动机罢工。不同引擎的工作原理也有不同,但目的都是驱动车轮。不过,如果你想开车去某个地方,还得把好方向盘,当然,这是题外话。
新的标准
New Standards
让我们看看添加一条新规范:加利福尼亚州的尾气排放标准(注1)。一些发动机达到了加州的严格排放标准,一些则没有。这两类发动机并没有本质的不同,只是按标准划分为两类。这些标准规定了发动机尾气排放的成分,而并没有规定发动机应该怎样做才能达标。所以,现在我们可以把之前的两分法变为四分法:符合标准的电动机、不符合标准的电动机、符合标准的汽油机和不符合标准的汽油机。
回到原来的话题,我敢打赌,电动机不需要做多少改动就可以达标——标准只是“规定”尾气的成分,而电动机几乎没有尾气。相反,汽油机要达标可能就需要大的修改和更新。使用汽油发动机的驾驶员尤其需要注意汽油的型号——如果加错了油,他们就惹上大麻烦了。
标准的作用
更严格的排放标准是个好玩意儿,但驾驶员也需要考虑更多,同时更加小心(至少对汽油车来说如此)。不过坦白说,新标准对大多数人没有什么影响,因为其他州不会施行加州的标准。
所以你知道,四种类型的发动机其实可以分为三类:两类是汽油机,一类是电动机。虽然它们都是驱动车轮的,但你明白了其中的差异。你不知道的是,这堆复杂的玩意与正则表达式有什么关系!其实这里面的关系远比你能想象的要复杂。
| 回书目 上一节 下一节 |