广告正则表达式的问题,请教
小弟是个新手,想问如下问题:网址: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-->
结果连不该隐藏的部分都隐藏了
:funk: 因为前面还有很多 </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-->,也可以的,
[[i] 本帖最后由 mzqingchen 于 2007-8-4 22:24 编辑 [/i]] </table></div>
这个结束标记你都过滤掉了?页面显示会出错吧。
其实只需要过滤掉2个iframe就可以了吧 我用 #exd#*wuxiawu.com*#<\/table><\/div>\n<div class="maintable" style="color: #666; clear: both;">(?:[\s\S]*?china.com[\s\S]*?<\/iframe){2}###<!--Ad-->,就没出错啊,
这个是结束标志来的吗?。。。不知道。。:sweat:
写一个正确的表达式,我参考一下吧,
[[i] 本帖最后由 mzqingchen 于 2007-8-4 23:19 编辑 [/i]] <iframe[^>]*?freecode[^>]*?>[\s\S]*?<\/iframe>
这样就可以匹配到2个iframe,你试试看吧 :) 好用,谢谢啦,我弄了半天。。。。。去掉2个iframe就行了,。。我还去一大段了,,, 多试几次慢慢就熟悉了,其实很简单的。 嗯,thank U,自己摸索还真是困难啊~没基础知识~。:funk:
但我还是想问问有没有办法限定那个</table>的问题,是前面的,(?:[\s\S]*?china.com[\s\S]*?<\/iframe){2} 是后面的,就懂。
[[i] 本帖最后由 mzqingchen 于 2007-8-4 23:37 编辑 [/i]] 嗯,正则表达式中
(?=xxx)
可以匹配限定在xxx之前的内容,不知道你是不是这个意思 是这个意思。
比如: </table>abcabc</table>abc</table>abcabc</table>www.china.com
我想想限定到过滤 </table>abcabc</table>www.china.com这一段代码,而前面还有很多相同的</table>abcabc,我该怎么表达? 那只能找到它们之间的差别了,找到你要匹配的那一段代码的唯一性 懂了,看来我的笨方法还是有效的。。。
页:
[1]