前言
正则表达式(regular expression,简称RegEx或regex)和正则表达式语言已经出现很多年了。正则表达式的专家们早就掌握了这种威力无比强大的武器,它可以在几乎所有语言和平台上执行各种复杂的文本处理和操作。
这是好事。但坏事是:长期以来,正则表达式一直是技术高手的专属标志。多数人并没有完全理解正则表达式的用途以及它能解决什么样的问题。那些敢于涉猎的人们发现正则表达式的语法不直观,有时候甚至难以理解。这不能不说是一种悲哀,因为正则表达式其实远没有第一眼看上去那么复杂。只要你能清晰地理解你想要解决的问题并学会如何使用正则表达式,就可以轻而易举地解决这些问题。
正则表达式不为大多数人所掌握的原因之一是缺乏相关的优质资源。一些正则表达式方面的书,以及包含正则表达式教程的大部分Web站点,往往过于偏重语法,只是在讲{是干什么的,+与*之间有什么区别。这些东西都不难,正则表达式语言中的特殊字符也不算很多。真正棘手的地方,在于弄明白该如何运用正则表达式去解决实际问题。
你拿在手里的这本书并不打算成为一本正则表达式大全。如果你想要的是这种书,那么应该去阅读Jeffrey Friedl编写的《精通正则表达式(第3版)》。Friedl先生是业内公认的正则表达式专家,他的书绝对是这方面既权威又全面的著作。但是,绝非冒犯Friedl先生,他的书并不适合初学者,即便是对于那些不需要理解正则表达式引擎的内部工作原理,只想找份工作的普通用户而言,也是如此。这并不是说那本书里的信息没有用,但如果你想做的就是为HTML表单添加验证功能或是对已解析过的文本进行替换,书中内容的确派不上什么用场。如果你想尽快上手正则表达式,就会发现自己陷入了一个两难境地:要么找不到简明易学的参考资料,要么找到的参考资料过于深奥,不知道从何开始。
这正是本书诞生的原因。书中所讲授的正则表达式知识是你真正需要知道的,从简单的文本匹配开始,循序渐进到更复杂的反向引用、条件评估、环视等主题。你学到的东西立刻就可以运用于实践,通过清晰实用的例子以及所展现的实际问题解决方法,你将有条不紊、系统化地学习到正则表达式的相关知识。