Board logo

标题: 广告正则表达式的问题,请教 [打印本页]

作者: mzqingchen    时间: 2007-8-4 22:10     标题: 广告正则表达式的问题,请教

小弟是个新手,想问如下问题:网址:http://bbs.wuxiawu.com/forumdisplay.php?fid=7 源文件就省略了,

广告代码应该是这一段:/table></div><div class="maintable" style="color: #666; clear: both;"><div align="center" style="clear: both; margin-bottom: 5px"><iframe id=chinashownews name=chinashownews width=50% height=120 marginheight=0 hspace=0 vspace=0 frameborder=no border=0 src="http://paidip.china.com/freecode/redirect.php?id=14411&url=http://news.china.com/zh_cn/paidnews_socialrecommendp/index.html?b=00FFFF&c=0000FF" ></iframe><iframe id=chinashownews name=chinashownews width=35% height=120 marginheight=0 hspace=0 vspace=0 frameborder=no border=0 src="http://paidip.china.com/freecode/redirect.php?id=14411&url=http://fun.china.com/zh_cn/ffip/index.html?f=12&b=00FFFF&c=0000FF&l=none" ></iframe>   


     我的表达式:#exd#*wuxiawu.com*#(?:<\/table>[\s\S]*?){1}(?:[\s\S]*?china.com[\s\S]*?<\/iframe){2}###<!--Ad-->



结果连不该隐藏的部分都隐藏了


    因为前面还有很多   </table>处,那想指定china.com前的第1个</table>,请教该怎么写,谢谢


当然用点笨方法       #exd#*wuxiawu.com*#<\/table><\/div>\n<div class="maintable" style="color: #666; clear: both;">(?:[\s\S]*?china.com[\s\S]*?<\/iframe){2}###<!--Ad-->,也可以的,

[ 本帖最后由 mzqingchen 于 2007-8-4 22:24 编辑 ]
作者: elkay    时间: 2007-8-4 22:57

</table></div>

这个结束标记你都过滤掉了?页面显示会出错吧。

其实只需要过滤掉2个iframe就可以了吧
作者: mzqingchen    时间: 2007-8-4 23:17

我用 #exd#*wuxiawu.com*#<\/table><\/div>\n<div class="maintable" style="color: #666; clear: both;">(?:[\s\S]*?china.com[\s\S]*?<\/iframe){2}###<!--Ad-->,就没出错啊,

这个是结束标志来的吗?。。。不知道。。

写一个正确的表达式,我参考一下吧,

[ 本帖最后由 mzqingchen 于 2007-8-4 23:19 编辑 ]
作者: elkay    时间: 2007-8-4 23:27

<iframe[^>]*?freecode[^>]*?>[\s\S]*?<\/iframe>

这样就可以匹配到2个iframe,你试试看吧
作者: mzqingchen    时间: 2007-8-4 23:30

好用,谢谢啦,我弄了半天。。。。。去掉2个iframe就行了,。。我还去一大段了,,,
作者: elkay    时间: 2007-8-4 23:32

多试几次慢慢就熟悉了,其实很简单的。
作者: mzqingchen    时间: 2007-8-4 23:34

嗯,thank U,自己摸索还真是困难啊~没基础知识~。
但我还是想问问有没有办法限定那个</table>的问题,是前面的,(?:[\s\S]*?china.com[\s\S]*?<\/iframe){2} 是后面的,就懂。

[ 本帖最后由 mzqingchen 于 2007-8-4 23:37 编辑 ]
作者: elkay    时间: 2007-8-4 23:38

嗯,正则表达式中
(?=xxx)
可以匹配限定在xxx之前的内容,不知道你是不是这个意思
作者: mzqingchen    时间: 2007-8-4 23:42

是这个意思。
比如:   </table>abcabc</table>abc</table>abcabc</table>www.china.com
我想想限定到过滤  </table>abcabc</table>www.china.com这一段代码,而前面还有很多相同的</table>abcabc,我该怎么表达?
作者: elkay    时间: 2007-8-4 23:54

那只能找到它们之间的差别了,找到你要匹配的那一段代码的唯一性
作者: mzqingchen    时间: 2007-8-5 13:06

懂了,看来我的笨方法还是有效的。。。




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