最近在做一个网站抓取新闻的网站。
需要用到正则进行匹配。但是新闻内部有广告需要去除掉。
别的都抓好了。正文有些问题。
不晓得怎么写。。
例子:
<div id="aa">
内容
<div id="bbb">广告</div>
<div id="ccc">广告2</div>
</div>
我现在是提取出来了这些。但是想要替换掉最外层div里面的所有div。但是最外层的div内的保留。
应该怎么用正则匹配出除了最外层以外的div标签。
需要用到正则进行匹配。但是新闻内部有广告需要去除掉。
别的都抓好了。正文有些问题。
不晓得怎么写。。
例子:
<div id="aa">
内容
<div id="bbb">广告</div>
<div id="ccc">广告2</div>
</div>
我现在是提取出来了这些。但是想要替换掉最外层div里面的所有div。但是最外层的div内的保留。
应该怎么用正则匹配出除了最外层以外的div标签。
Pattern p = Pattern.compile("<div[^>]*[>]?(.*)</div>");
Matcher m = p.matcher("<div id=\"aa\">内容<div id=\"bbb\">广告</div><div id=\"ccc\">广告2</div></div>");
if(m.find())
{
System.out.println("haha::::"+m.group(1));
}
例子:
还是上面的那个例子吧。匹配出id为aa的所有内容。
这个可以 group(1)可以取出 最外层div的内容将以上表达式改成 "<div\\s+id=\"aa\"[>]?([^<]*)(.*)</div>"如果要指定id,建议将正则式中的 id 设置成变量
Pattern p = Pattern.compile("<div\\s+id=\"aa\"[>]?([^<]*)(.*)</div>");
Matcher m = p.matcher("<div id=\"aa\">内容<div id=\"bbb\">广告</div><div id=\"ccc\">广告2</div></div>");
if(m.find())
{
System.out.println("haha::::"+m.group(0));
System.out.println("haha::::"+m.group(1));
System.out.println("haha::::"+m.group(2));
}如果还想去嵌套在里面的div, 将匹配出来的内嵌div循环使用该正则式,应该就可以了
这个正则里如何表示嵌套关系,我还不清楚,你可以搜一下http://www.cnblogs.com/yanbinboy/archive/2008/05/19/1202634.html
http://www.imkevinyang.com/tags/html%E5%B5%8C%E5%A5%97%E6%A0%87%E7%AD%BE%E5%8C%B9%E9%85%8D
http://www.byywee.com/page/M0/S249/249012.html