阅读:10113回复:21
请帮忙写一个准确的正则表达式
我想把一些图片用adblock plus过滤掉,学了半天正则表达式,还是没弄出个满意的精炼和准确的表达式,郁闷。反正就是多是超出内容的范围,把一些根本无关的链接也过滤了,甚至连有些网页的搜索按钮也变没了。
现在只能求助各位高手,请帮我把如下的内容写出个正确的表达式,拜谢了。 (这个在线优化规则的我也用过了: http://adblock.free.fr/optimize/index.php?lang=en 效果不是很好,实际上就是我描述的那些超出范围的错误) 要过滤的图片如下: ggao/*.gif ggao/*.swf upload*/*.swf upload*/*.gif download*/*.gif download*/*.swf a-d*/*.gif a-d*/*.swf a-d*/*.jpg a-d/*.gif a_d*/*.gif a_d*/*.swf a_d*/*.jpg logo/*.gif logo/*.swf blog/*.gif blog/*.swf a_*_d/*.gif a_*_d/*.swf a_*_d/*.jpg a-*-d/*.gif a-*-d/*.swf a-*-d/*.jpg ad-*/*.gif ad-*/*.swf ad-*/*.jpg ad_*/*.gif ad_*/*.swf ad_*/*.jpg ads-*/*.gif ads-*/*.swf ads-*/*.jpg ads_*/*.gif ads_*/*.swf ads_*/*.jpg -ad/*.gif -ad/*.swf -ad/*.jpg -ad/*.gif -ad/*.swf -ad/*.jpg _ads/*.gif _ads/*.swf _ads/*.jpg _ads/*.gif _ads/*.swf _ads/*.jpg img*/*.gif img*/*.swf image*/*.swf img*/*images*/*.gif |
|
1楼#
发布于:2006-08-20 04:07
/a(d(((s[-_]|-|_).*/.*\.gi|(s[-_]|-|_).*/.*\.sw)f|s[-_].*/.*\.jpg)|([-_]d.*/.*\.gi|[-_]d.*/.*\.sw)f|-.*-d/.*\.((gi|sw)f|jpg)|_.*_d/.*\.((gi|sw)f|jpg))|(-ad/.*\.(gi|sw)|blog/.*\.(gi|sw)|download.*/.*\.(gi|sw)|ggao/.*\.(gi|sw)|im(g.*/.*(images.*/.*)?\.gi|(age|g).*/.*\.sw)|logo/.*\.(gi|sw)|upload.*/.*\.(gi|sw))f|(a([-_]d|d[-_]).*|-ad)/.*\.jpg|_ads/.*\.((gi|sw)f|jpg)/
|
|
2楼#
发布于:2006-08-20 04:07
/*.swf
/*.gif /*.jpg 这样世界就安静了~ 纯属恶搞 |
|
|
3楼#
发布于:2006-08-20 04:07
其实里面的
a_*_d a-*-d 这样的网址大家见过吗? 而且只屏蔽图片和swf不够吧,最好所有都屏蔽,包括js,html那些。 |
|
4楼#
发布于:2006-08-20 04:07
pansxw:/a(d(((s[-_]|-|_).*/.*\.gi|(s[-_]|-|_).*/.*\.sw)f|s[-_].*/.*\.jpg)|([-_]d.*/.*\.gi|[-_]d.*/.*\.sw)f|-.*-d/.*\.((gi|sw)f|jpg)|_.*_d/.*\.((gi|sw)f|jpg))|(-ad/.*\.(gi|sw)|blog/.*\.(gi|sw)|download.*/.*\.(gi|sw)|ggao/.*\.(gi|sw)|im(g.*/.*(images.*/.*)?\.gi|(age|g).*/.*\.sw)|logo/.*\.(gi|sw)|upload.*/.*\.(gi|sw))f|(a([-_]d|d[-_]).*|-ad)/.*\.jpg|_ads/.*\.((gi|sw)f|jpg)/回到原帖 这一看就是利用在线优化规则得来的(http://adblock.free.fr/optimize/index.php?lang=en)。效果不好,不是很准确。 不信的话,大家可以到www.okget.com去试试,搜索按钮没了,按钮的地址是http://www.okget.com/img/common/searchbutton.gif 根本不在要过滤的范围内。 |
|
5楼#
发布于:2006-08-20 04:07
|
|
|
6楼#
发布于:2006-08-20 04:07
实际上我的问题关键就是不想输入了/img\/.*\.gif/ 或是 img/*.gif 而过滤了/img/*/*.gif 或是/img/*/*/*/.gif
如果能修改一下/img\/.*\.gif/ 的表达,那么写那些诸多图片的正则式就可以解决了。 请各位多多赐教。 ![]() ![]() ![]() |
|
7楼#
发布于:2006-08-20 04:07
我觉得,既然是正则表达式,就不应该用*号,用类似[a-zA-Z](\d){4,6} 这样的写法代替之
|
|
|
8楼#
发布于:2006-08-20 04:07
|
|
9楼#
发布于:2006-08-20 04:07
lz要的是过滤crsky.com的广告吧
去wiki看吧,我写了的 |
|
10楼#
发布于:2006-08-20 04:07
我喜欢拆开来,比较清爽
/(ggao|logo|blog)\/.*\.(gif|swf)/ /((up|down)load|img|image)(^\/)*\/(^\/)*\.(gif|swf)/ /(_)?a((-|_).*(-|_)?)?d(s)?(-|_)?.*\/.*\.(gif|swf|jpg)/ 有没有效果就不知道了~ |
|
11楼#
发布于:2006-08-20 04:07
|
|
12楼#
发布于:2006-08-20 04:07
能给个测试页面么? |
|
13楼#
发布于:2006-08-20 04:07
第一条(/(ggao|logo|blog)\/.*\.(gif|swf)/) 可以到http://www.okget.com/Soft/Soft_1307.htm测试,对logo起作用,该条规则可以用。但是如果再加一个img放到规则里,即/(ggao|logo|blog|img)\/.*\.(gif|swf)/,会发现规则过滤的范围扩大了,在网页(<!-- w --><a class="postlink" href="http://www.okget.com">www.okget.com</a><!-- w -->)上它把搜索按钮(http://www.okget.com/img/common/searchbutton.gif)也过滤了。也就是说 /(ggao|logo|blog)\/.*\.(gif|swf)/ 能把 /ggao/somewords/somepic.gif 也过滤掉了,而需要的则是要过滤/ggao/somepic.gif。
第二条(/((up|down)load|img|image)(^\/)*\/(^\/)*\.(gif|swf)/) 可以到www.rising.com.cn测试。瑞星首页下面有flash (http://www.rising.com.cn/img06/365zhaopin.swf),规则未能过滤掉。即便把规则改成 /((up|down)load|image|img06)(^\/)*\/(^\/)*\.(gif|swf)/ ,也仍然不能过滤。所以此条规则写的有问题。 第三条(/(_)?a((-|_).*(-|_)?)?d(s)?(-|_)?.*\/.*\.(gif|swf|jpg)/) 暂时还没找到可以测试的网站,因为这些要过滤的内容是我认为可能会出现的,所以就写出来想把它们过滤掉。但是这条规则我没发现错误而且很精炼,应该能有作用。如果有测试的网页也请告诉一声。 |
|
14楼#
发布于:2006-08-20 04:07
关于正则表达式,我一直很迷,但最近看到AdblockPlus上的官方说法后,我觉得可以不用那么吹毛求疵了:
Note: You should not use regular expressions to speed up processing of your filter list. 也就是说,正则表达式除了在外观上简练以外,剩下唯一的好处就是方便网友交流。速度上没有任何优势,楼主把那一堆普通Filters载入到ABplus反而更实用。 |
|
|
上一页
下一页