返回列表 发帖

将符合条件的某个div过滤掉,规则该如何写?

现有网页源文件片段如下:

  1. <div class="q_ht">
  2.       <div class="q_ht1"> <a href="topic.php?gid=1414&tid=14838260" class="sl f14" title="加群15651783就送50个金典奶">加群15651783就送50个金典奶</a> </div>
  3.       <div class="q_ht2 c6">146</div>
  4.       <div class="q_ht3 c6">21</div>
  5.       <div class="q_ht4"><a href="/home/?uid=15547201" class="sl" title="张凤颂"><img src="http://pic1.kaixin001.com/logo/54/72/20_15547201_1.jpg" width="20" height="20" align="absmiddle" /></a> <a href="/home/?uid=15547201" class="sl" title="张凤颂">张凤颂</a></div>
  6.       <div class="l c6">18:41</div>
  7.       <div class="c"></div>
  8.      </div>
  9.      <div class="q_ht">
  10.       <div class="q_ht1"> <a href="topic.php?gid=1414&tid=14845882" class="sl f14" title="加我一起玩啊~">加我一起玩啊~</a> </div>
  11.       <div class="q_ht2 c6">18</div>
  12.       <div class="q_ht3 c6">1</div>
  13.       <div class="q_ht4"><a href="/home/?uid=44059996" class="sl" title="王钰洁"><img src="http://pic.kaixin001.com/logo/5/99/20_44059996_1.jpg" width="20" height="20" align="absmiddle" /></a> <a href="/home/?uid=44059996" class="sl" title="王钰洁">王钰洁</a></div>
  14.       <div class="l c6">18:33</div>
  15.       <div class="c"></div>
  16.      </div>
  17.      <div class="q_ht">
  18.       <div class="q_ht1"> <a href="topic.php?gid=1414&tid=14736950" class="sl f14" title="手机短信媳妇随时看">手机短信媳妇随时看</a> </div>
  19.       <div class="q_ht2 c6">166</div>
  20.       <div class="q_ht3 c6">16</div>
  21.       <div class="q_ht4"><a href="/home/?uid=50473948" class="sl" title="李征鹏(ZP)"><img src="http://pic.kaixin001.com/logo/47/39/20_50473948_2.jpg" width="20" height="20" align="absmiddle" /></a> <a href="/home/?uid=50473948" class="sl" title="李征鹏(ZP)">李征鹏(ZP)</a></div>
  22.       <div class="l c6">18:29</div>
  23.       <div class="c"></div>
  24.      </div>
复制代码




我想将第二个外层div标签内的内容全部屏蔽为
<div class="q_ht">已过滤</div>

过滤条件是内层中第四个div中的uid——44059996
      <div class="q_ht4"><a href="/home/?uid=44059996" class="sl" title="王钰洁"><img src="http://pic.kaixin001.com/logo/5/99/20_44059996_1.jpg" width="20" height="20" align="absmiddle" /></a> <a href="/home/?uid=44059996" class="sl" title="王钰洁">王钰洁</a></div>

也就是说,只要第四个div的链接中含有uid 44059996,我就要将整个外层div标签的内容屏蔽

请问我应该怎么做?









我自己写的:
(<div class=\"q_htq\">[^<]*?(<div[^>]*?>[\s\S]*?<\/div>[^<]*?){3}<div class=\"q_htq4\"><a href=\"\/home\/\?uid=44059996\"[\s\S]*?<\/a>[\s\S]*?(?:<div[\s\S]*?<\/div>[\s\S]*?){2}[\s\S]*?<\/div>)
会将外层第一个div下的东西也过滤掉……

  1. <div(?:(?:[\s\S](?!<\/?div))*?[\s\S]<div(?:[\s\S](?!<\/?div))*?[\s\S]<\/div>){3}(?:[\s\S](?!<\/?div))*?[\s\S]<div[^>]*?><a[^>]*?uid=44059996(?:[\s\S](?!<\/?div))*?[\s\S]<\/div>(?:<div(?:[^<]|<(?!<\/div>))*?<\/div>|[^<]|<(?!<\/div>))*?<\/div>
复制代码

TOP

通用
  1. #ex#<div class="q_ht">([\s\S](?!<div class="q_ht">))*?<div class="q_ht4"><a [^>]*?uid=44059996[^>]*>[\s\S]*?</div>\s*</div>###<div class="q_ht">已过滤</div>
复制代码
专用网址
  1. #exd#*网址*#<div class="q_ht">([\s\S](?!<div class="q_ht">))*?<div class="q_ht4"><a [^>]*?uid=44059996[^>]*>[\s\S]*?</div>\s*</div>###<div class="q_ht">已过滤</div>
复制代码

TOP

本帖最后由 lastwinner 于 2009-9-9 13:58 编辑

谢谢二位,我写的
  1. \r\n\t{3}<div class=\"q_ht\">[\r\n\t]*<div[^\r\n]*?</div>[\r\n\t]*?<div[^\r\n]*?</div>[\r\n\t]*?<div[^\r\n]*?</div>[\r\n\t]*?<div[^\r\n]*?<a href="\/home\/\?uid=44059996\"[^\r\n]*?</div>[\r\n\t]*?<div[^\r\n]*?</div>[\r\n\t]*?<div[^\r\n]*?</div>[\r\n\t]*?</div>
复制代码

在用web的reg tester测试通过了
但在tw里就是不灵


试试二位的先~

TOP

?!
学到一个新用法


更新之后,需要重启TW么?
印象中好像是不需要啊,可为什么不起作用呢。。。

TOP

\r\n\t{3}修改为[\r\n\t]*?即可
如下:
  1. [\r\n\t]*?<div class=\"q_ht\">[\r\n\t]*<div[^\r\n]*?</div>[\r\n\t]*?<div[^\r\n]*?</div>[\r\n\t]*?<div[^\r\n]*?</div>[\r\n\t]*?<div[^\r\n]*?<a href="\/home\/\?uid=44059996\"[^\r\n]*?</div>[\r\n\t]*?<div[^\r\n]*?</div>[\r\n\t]*?<div[^\r\n]*?</div>[\r\n\t]*?</div>
复制代码
再次感谢二位高手!

TOP

返回列表