第一次接触正则表达式,还是在2000年使用Perl CGI做Web开发的时候。Perl给我留下最深刻印象的就是它的正则表达式。我使用Perl的正则表达式开发了一个简单的模板引擎,可以将程序逻辑与页面的HTML标记分离开。正则表达式可以以非常简练的方式高效地完成复杂的文本处理工作。如果不使用正则表达式,做相同的文本处理需要耗费的资源(CPU周期、内存、开发时间)要多得多。精通正则表达式,就好像是掌握了一件威力巨大的独门暗器,可以在开发的很多关键时刻克敌制胜。不精通正则表达式是没有资格自居为Perl高手的。 正是强大的正则表达式使得Perl取代传统的sed、awk等老旧的Unix文本处理工具,成为了系统维护人员的最爱,并且使得Perl在基于CGI的第一代Web开发技术中独占鳌头。在我的印象中,1998年之前的第一代电子商务网站(规模最大的一类网站),几乎都是基于Perl CGI开发的。
后来我们转向了第二代Web开发技术JSP,在得到了更好的代码可维护性的同时,最大的感觉就是使用Java来做文本处理实在是很笨拙,当时Java核心类库还不支持正则表达式。这使我很怀念过去使用Perl的正则表达式时那种自己无所不能的美好感觉。
Java发展到了1.4版,在核心类库级别提供了对正则表达式的支持。这些支持并没有很多新意,但是补充了Java的一个严重的不足。
后来我还在很多语言和开发工具中找到了正则表达式的身影,例如JavaScript、Ruby、vi、sed、grep、Apache mod_rewrite等等。现代的编程语言,大多都能够支持正则表达式了。这些不同的正则表达式实现原理上都是一样的,使用方法大同小异。只要深入学习过某种语言的正则表达式,学习另一种语言的正则表达式易如反掌。
正则表达式几乎是所有文本处理工具的基础,由于Web开发的大部分工作都是面向文本处理的(与HTML打交道),因此正则表达式显得越来越重要。但是出于利润上的考虑,国内的出版社对于这些基础技术一向重视不足。这妨碍了很多开发者技术的精进,他们只能通过网络上流传的一些零散的教程来进行学习。
O'Reilly的这本《精通正则表达式》是一本名著,也是目前最好的正则表达式方面的专著,至今已经出到了第3版。博文视点将它引进到了国内,对于国内的开发者来说,可谓是一件迟来的礼物。但是出版这本书的意义非常大,甚至对于一些自以为已经熟悉正则表达式的老手来说,这本书也能够带来很多新的营养,有助于他们充分挖掘正则表达式的潜力。阅读这本书,在我看来就是一场集体补钙。改写电影《大腕》里面的一句台词:“我们美国开发界已经集体补过钙了,现在呢,就轮到你们中国开发界了。”
查看本文来源