不知不觉系统的学习正则已经一年了,特撰此文。推荐教材《精通正则表达式》英文名:"mastering regular expressions",作者:Jeffrey E. F. Friedl。注:如果你看中文版时觉得代码有问题,请看原版,至少看原版的代码。

开门见山

元字符什么的我就不说了,先说说“环视”。顾名思义环视就是环顾四周,周围是根据当前位置(描点)确定的。环视的作用是环顾四周,但并不匹配(捕获)周围字符。根据描点的前面或后面,是或不是分为四种:正向肯定环视、正向否定环视、逆向肯定环视和逆向否定环视。

说了环视,下来说捕获。捕获有捕捉,获取拿到之意。初学正则时,使用的都是捕获,如\s:捕获一个空白;\d+: 捕获至少一个数字。既然有捕获,就有非捕获,这里要说明的是环视是不捕获的,环视会确定一个位置点。

速度:这里单指正则表达式的速度,如何写出速度更高的正则。不匹配时,要加快匹配失败的速度,同时要减少回溯。正则要尽可能的准确的描述,如指定^$中的一个或都指定。+++?指的是匹配优先,和忽略优先,前者一次匹配尽可能多的字符,后者则一个一个匹配。

这是我们讲回溯,我的理解是:回溯是将已经匹配了的字符吐出来,尝试再次匹配。

总结

未完待续 本文目的不是教会正则,如果能通过本文对正则产生兴趣足以,那本书写的很好,很是推荐。