总结:开动你的大脑

04-13Ctrl+D 收藏本站

关灯 直达底部

In Summary:Think!

在本章的结尾讲个故事,我希望读者能够明白,在NFA中使用正则表达式时,稍微动动脑筋能带来多大的收益。在使用GNU Emacs时,我希望用一个正则表达式来找出某种类型的缩写,例如“don’t”、“I’m”和“we’ll”之类,同时必须忽略与单词邻接的单引号。我想用「\<\w+」来匹配单词,然后是「'([tdm]|re|ll|ve)」。这办法没有问题,但是我意识到,使用「\<\w+」是愚蠢的,因为这里只用到\w。你看到了,如果撇号之前就是一个\w,\w+显然也能够匹配,所以这个正则表达式检查并没有增加新的信息,除非我希望得到匹配的文本(在这里并不需要,我们只需要找到这个位置)。单独使用\w的正则表达式的速度是原来的10倍。

正因如此,一点点的思考就可以带来巨大的收获。我希望本章能够引发你的这点思考。