正则表达式必知必会
上QQ阅读APP看书,第一时间看更新

引言

正则表达式(regular expression)和正则表达式语言已经出现很多年了。正则表达式的专家们早就掌握了这种威力无比强大的武器,它可以用来完成各种复杂的文本处理工作。更重要的是,这种武器可以在几乎所有的程序设计语言里和几乎所有的计算机平台上使用。

这是个好消息,但我还要告诉你一个坏消息:长期以来,只有一些真正的专家才能真正掌握正则表达式。甚至有很多人根本没有听说过正则表达式这个概念,更不用说用它们来解决问题了。至于少数勇于涉猎正则表达式领域的人们,又往往会因为正则表达式难以理解而浅尝辄止或总是在原地徘徊。这不能不说是一种悲哀,因为正则表达式其实并没有人们想像中的那么复杂。只要你能清晰地理解你想要解决的问题并学会如何使用正则表达式,就可以轻而易举地解决这些问题。

正则表达式不为大多数人所掌握的原因之一是关于这方面的好资料太少了。虽然有很多网站在吹嘘它们的正则表达式教程如何全面,但实际情况却是高质量的正则表达式学习资源相当稀缺。即便能够找到几本介绍正则表达式的书籍,它们又往往过于偏重语法而显得不够实用——知道如何定义{或是知道+与*之间的区别并不等于真正掌握了正则表达式的用法。在笔者看来,那些书籍反而把简单的问题弄得更复杂了:在学习和使用正则表达式的时候,重要的并不是你知道多少个特殊字符,而是你会不会运用它们去解决实际问题。

你拿在手里的这本书并不打算成为一本正则表达式的大全。如果你想要的是那样一本书,你应该去阅读Jeffrey Friedl编写的Mastering Regular Expressions(O'Reilly出版公司,ISBN 0596002890)。Friedl先生是业内公认的正则表达式专家,他的书绝对是这方面最权威和全面的著作。本人对Friedl先生没有丝毫成见,但他的书不适合初学者也是实情;如果你只打算尽快完成手头的工作而不是要钻研正则表达式的内部原理的话,他的书也不很适用。这并不是说那本书里的信息没有用,只是它在你想要给HTML表单添加一些验证功能或者只想对解析的文本进行替换的时候派不上什么用场。如果你想尽快学会正则表达式的基本用法,你将发现自己陷入了一个两难境地:要么找不到简明易学的参考资料,要么找到的参考资料过于深奥而让你不知该如何起步。

这正是促使笔者编写本书的原因。本书所讲授的关于正则表达式知识正是你们在刚起步时最需要的,我们将从简单的文本匹配开始循序渐进地向大家介绍许多复杂的专题,其中包括回溯引用(backreference,或译为后向引用)、条件性求值(conditional evaluation)和前后查找(looking-around),等等。本书最大的优势是所学到的知识可以立即运用于实践中:我们在每章里都为大家准备了许多简明又实用的示例,它们可以帮助你全面、系统、快速地掌握正则表达式并运用它们去解决实际问题,而每章在10分钟甚至更短的时间里就可以学完。

还等什么,赶快翻到第1章开始今天的学习吧,你肯定会立刻感受到正则表达式的强大威力。