原帖由 Aycox 于 2006-5-10 16:30 发表
而正则表达式,我大致理解的好比是一个 IF 语句的嵌套,如果第一个匹配了就不会进行以下的运算,假如常规的黑名单也是匹配后不会再进行其它的匹配,那么两者的区别可能就剩下眼见条目多少了,不知理解是否有误。
正则表达式远不是这么简单的,先说其效率问题,例如对于平常以下两条规则
*/ads.*
*/adv.*
如果URL里有adv,那么匹配时要比较的字母至少有a d s a d v6次
但是写成正则表达式只有一条规则
ad(s|v)
那么只需要比较a d s v4次。(当然括号之类的为了说明简单就不算数了)
而大家留意一下TW或者MT里的规则,许多都是十分类似的,例如都含有ad或者banner字母,只是在首尾有./之类的不同,这样几十条规则下来如果只用一条正则表达式来写成规则,就是节省了数十次的相同字母比较。若相似部分不是ad这么短而是更长,那么节省的更多。