Board logo

标题: 规则写法 粗谈 [打印本页]

作者: duckZCX    时间: 2008-4-10 15:22     标题: 规则写法 粗谈

                                                                       前言
1、想要搞定广告,自然得知道广告在HTML代码中的位置,知道位置,把它从HTML中刨除,使得网页解析的时候就没得广告解析,从而达到过滤广告的效果。
2、TW提供的过滤规则实际可以看成:我给出一个过滤式,然后TW通过过滤式描述的内容在HTML源码中剔除相应的代码。
                                                                   粗人的粗写法
    [^>]*? 用于<>内任意字符
    [\s\S]*?用于<>外任意字符或者前面已经有一个>结尾 之后的任意字符

    查查正则表达式里 元字符的意思,例如你想要过滤掉.(点),那么你的正则写法应该为\.(右斜杠点)
    HTML属于前后对称的语法,故我们一般看到的效果(例如文字:LLL),在HTML源代码里都被至于<><>之间,形如<>LLL<>。
    既然正则提供了强大的字符匹配功能,那么我们只需要描述广告的<>标记,俗称tag标记,然后在tag标记间用任意字符代替,不管广告本身要描述的内容有多大,多广,统统搞定。
    最后需要做的就是唯一性了,举个例子,我写一篇文章,标题是3号字体的LLL,对应的HTML代码是:               <font size="3">LLL</font>
    文章正文是4号字体的LLL,对应的HTML代码是:          <font size="4">LLL</font>         
            
    写规则的时候,可以使用<font[^>]*?>[\s\S]*?<\/font>来描述,但你会发现不管3,4号的两种字体都被过滤了,这里的问题就在于规则的[^>]*?匹配font所在中括号内的所有字符,包括空格,自然3和4也被匹配了,所以都符合过滤规则,双双被拿下。
   如果我只想要过滤掉3号字体的LLL,那么只能让过滤条件符合3,也就是我们所说的唯一性了,对比两端代码会发现,除了3和4不同外,其余的地方均相同,那么我们点明匹配3,即
<font[^>]*?3">[\s\S]*?<\/font> 即可实现针对3号字体的过滤。

    注意:在上述规则[^>]*?3"处,我使用了3"结尾,但同样也可以使用3[^>]*?结尾,前者只能特定匹配以3"结尾然后>,后者却可以匹配3或者3后面跟任意数量字符的,包括"在内然后>的,通俗的说前者是后者的子集

0 0以后补充

[ 本帖最后由 duckZCX 于 2008-4-10 15:53 编辑 ]
作者: sky5    时间: 2008-4-10 15:26     标题: 规则写法 粗谈

abc[?=exp]这是看前面,可惜不支持看看后面,不然的话上面的两条可以更好的利用
作者: sky5    时间: 2008-4-10 15:27

刚看的时候还以为楼主写错字“初探”呢
作者: 52twb    时间: 2008-4-10 16:03

学习了。
作者: 废墟一角    时间: 2008-4-10 16:29

#exd#*bbs.ioage.com/cn/viewthread.php?tid=55229&page=1&extra=page%3D1*#<p class="customstatus">[\s\S]*?<\/p>###嘘嘘大人,我交作业了


惊喜来了~~~~~~

[ 本帖最后由 废墟一角 于 2008-4-10 16:45 编辑 ]
作者: duckZCX    时间: 2008-4-10 16:38

#exd#*bbs.ioage.com/cn/viewthread.php?tid=55229&extra=page%3D1#<div id="postmessage_521742" class="t_msgfont">[\s\S]*?<\/div>###丫丫很满意啊

[ 本帖最后由 duckZCX 于 2008-4-10 16:54 编辑 ]
作者: 52twb    时间: 2008-4-10 17:23

一直觉得TW不错,就是因为其可以自我创作功能,给喜好的朋友一个展示个性的空间。
希望楼主多多发如此好贴,学习学习。
作者: yjwgi    时间: 2008-4-10 18:24

楼主的文章很好
但我还是没兴趣去学。
作者: asin888    时间: 2008-4-10 19:10

为什么不能用<font size="3">[\s\S]*?<\/font>过滤?
为什么一定要把size=这类的用匹配符呢
作者: ice-fire    时间: 2008-4-10 19:36

别谈了!
直接给我们一个通用的规则吧!!
作者: Aycox    时间: 2008-4-10 20:21

呵呵,人人都企望灵丹妙药一颗下肚广告全灭,可是世上真有仙丹么
支持鸭版通俗讲解,老百姓就说老百姓自己的能懂的话
作者: 雕刻时光    时间: 2008-4-12 13:22

支持下这种普及。
作者: wscary    时间: 2008-4-14 18:38

学习下
作者: duckZCX    时间: 2008-4-22 17:35

原帖由 asin888 于 2008-4-10 19:10 发表 http://bbs.ioage.com/cn/images/common/back.gif
为什么不能用[\s\S]*?过滤?
为什么一定要把size=这类的用匹配符呢

通俗的说,习惯问题。

也可以说,您的方式是完全正确的
作者: maxint    时间: 2008-5-8 16:02

这个要顶,很实用




欢迎光临 世界之窗论坛 (http://bbs.theworld.cn/) Powered by Discuz! 7.2