第5章 正则表达式实用技巧

04-13Ctrl+D 收藏本站

关灯 直达底部

Practical Regex Techniques

现在我们已经掌握了编写正则表达式所需的基本知识,我希望在更复杂的环境中应用这些知识来处理更复杂的问题。每个正则表达式都必须在下面两个方面求得平衡:准确匹配期望匹配的内容,忽略不期望匹配的字符。我们已经看过许多例子都说明,如果应用得当,匹配优先非常有用,但如果不够小心,也可能带来麻烦,在本章我们还将看到许多例子。

NFA 引擎还需要平衡另外一个因素:效率,这也是下一章的主题。设计糟糕的正则表达式——即使可以认为没犯错误——也足以让引擎瘫痪。

本章出现的主要是各种实例,我会带领读者循着我的思路去解决各种问题。某些例子或许对读者并没有现实价值,但我仍然推荐读者阅读这些实例。

例如,即使你的工作不涉及HTML,我仍推荐你从处理HTML的实例中吸取知识。原因在于,编写巧妙的正则表达式不仅仅是一种手艺(skill)——而且还是一种艺术(art)。它的教授和学习,不是依靠罗列规则,而是依靠经验,所以,我用这些例子告诉读者,自己在过去的若干年从经验中获得的深刻启示。

当然,读者仍然需要自己掌握这些知识,但是研究本章的例子是个好的起点。