返回列表 发帖

[求助]这样的过滤规则怎么写?谢谢

页面源代码里有如下两行代码:
<script src="http://www.122737.com/top.js"></script>
<script src="http://www.122737.com/pn_3527_2.js"></script>

请问怎么写过滤规则?我是新手来的,对正则表达式不懂,看没半天没也看懂,只好求助了,谢谢大家!

对于这类广告并不是强制要求使用正则表达式的,一样可以使用以前的通配符方式
你直接将这两个脚本的地址加入黑名单就可以了

TOP

谢谢管理员,我是想学正则表达式啊,写不好,怎么用一个正则表达式表示上面的两个脚本呢?

TOP

原帖由 smile16888 于 2008-11-22 15:02 发表 http://bbs.ioage.com/cn/images/common/back.gif
谢谢管理员,我是想学正则表达式啊,写不好,怎么用一个正则表达式表示上面的两个脚本呢?

  1. <script.*?122737.*?script>
复制代码

TOP

回复 3# smile16888 的帖子

首先你要找到这两个地址的相同点,比如用4楼的方法,会过滤所有网址中含有122737的脚本连接,所以你要确认这个网址中含有122737的脚本连接都是你要过滤的,这样就可以采用4楼的方法,如果不是所有的都要过滤,那就要仔细观察,直到确定你要过滤的内容是什么,然后才可以根据这个写正则表达式。

TOP

回复 5# elkay 的帖子

谢谢管理员和4楼的兄弟
如果我确认就是要过滤某个网站(假设为*.ioage.com)的这两个脚本的话,规则这样写,对吗?
#exd#*.ioage.com#<script[\s\S]*?122737(?:[\s\S]*?<\/script>){2}###<!--Ad blocked by theWorld2-->
有没有更简单的写法呢?

TOP

回复 6# smile16888 的帖子

(?:[\s\S]*?<\/script>){2}
这里不需要重复2次,所以不需要{2}

另外你要确认这个网站上没有第三个网址中含有122737字样的脚本才可以用这个规则,因为这个规则不仅仅是对你说的这2个脚本起作用,而是过滤所有的网址中含有122737字样的脚本

最简单的写法就是我一开始说的不要用正则表达式,直接将你要过滤的脚本网址写入黑名单即可

TOP

回复 7# elkay 的帖子

谢谢管理员
我学会了很多,管理员很负责任啊,又很热心。再次感谢!

TOP

回复 8# smile16888 的帖子

不客气
有这方面的问题可以随时发帖,我看到会第一时间回复的

TOP

回复 4# ulsdylx 的帖子

<script.*?122737.*?script>

想问下: .*?有什么用  为什么要用.*?
刚才学习了正则表达式,不过没搞懂意思
请高人帮忙解释下,谢谢!

TOP

另外,我用我在6楼写的那个表达式去过滤,发现过滤过头了,网页中间都是空白了。错在哪里呢,{2}我已经取掉了。

TOP

置顶的教程帖里有详细的正则表达式字符表。
简单来说".*?"就是"."的非贪婪模式

至于过滤多了的问题,可能是由于用[\s\S]*?这个的缘故,你可以尝试缩小范围,用[^>]*?这样的方式,你可以参考一下其他的过滤规则,应该很容易弄明白

另外,我的建议是正则表达式部份一定要完整,即尽量不使用[\s\S]*?这种,尽量跟网页源代码保持一致,这样出现问题的几率也会最少

TOP

返回列表