http://www.sasac.gov.cn/n1180/n1196/n3175/index.html假设是这个网站..
<table width="97%" border="0" align="center" cellspacing="0" cellpadding="0">
<tr>
<td width="15" height="22"><img src="/n1180/template/8685/images/index_31.gif" width="5" height="5" alt="" /></td> <td><a href=/n1180/n1566/n258252/n258599/13361685.html target=_blank>邵宁在中央企业管理创新暨全面风险管理经验交流会议上的讲话</a></td>
<td width=70>2011-03-29</td>
</tr>
</table>
<table width="97%" border="0" align="center" cellspacing="0" cellpadding="0">
<tr>
<td width="15" height="22"><img src="/n1180/template/8685/images/index_31.gif" width="5" height="5" alt="" /></td>
<td><a href=/n1180/n1566/n259730/n264153/13344030.html target=_blank>《人民日报》:深入学习贯彻《意见》 切实加强和改进新形势下国企思想政治工作</a></td><td width=70>2011-03-23</td>
</tr>
</table>里面部分代码
这个表达式该怎么写呢?试了挺久没成功,最终目标是要匹配大多数网站..谢谢各位牛人需要提取的数据有
[/n1180/n1566/n258252/n258599/13361685.html , 邵宁在中央企业管理创新暨全面风险管理经验交流会议上的讲话, 2011-03-29]
[/n1180/n1566/n259730/n264153/13344030.html, 《人民日报》:深入学习贯彻《意见》 切实加强和改进新形势下国企思想政治工作, 2011-03-23]
自己尝试再写.但是没太大进展..才学的正则语法谢谢了
<table width="97%" border="0" align="center" cellspacing="0" cellpadding="0">
<tr>
<td width="15" height="22"><img src="/n1180/template/8685/images/index_31.gif" width="5" height="5" alt="" /></td> <td><a href=/n1180/n1566/n258252/n258599/13361685.html target=_blank>邵宁在中央企业管理创新暨全面风险管理经验交流会议上的讲话</a></td>
<td width=70>2011-03-29</td>
</tr>
</table>
<table width="97%" border="0" align="center" cellspacing="0" cellpadding="0">
<tr>
<td width="15" height="22"><img src="/n1180/template/8685/images/index_31.gif" width="5" height="5" alt="" /></td>
<td><a href=/n1180/n1566/n259730/n264153/13344030.html target=_blank>《人民日报》:深入学习贯彻《意见》 切实加强和改进新形势下国企思想政治工作</a></td><td width=70>2011-03-23</td>
</tr>
</table>里面部分代码
这个表达式该怎么写呢?试了挺久没成功,最终目标是要匹配大多数网站..谢谢各位牛人需要提取的数据有
[/n1180/n1566/n258252/n258599/13361685.html , 邵宁在中央企业管理创新暨全面风险管理经验交流会议上的讲话, 2011-03-29]
[/n1180/n1566/n259730/n264153/13344030.html, 《人民日报》:深入学习贯彻《意见》 切实加强和改进新形势下国企思想政治工作, 2011-03-23]
自己尝试再写.但是没太大进展..才学的正则语法谢谢了
String s = yourStr; //网页源文件
Matcher m = p.matcher(s);
while(m.find()){
System.out.println("[" + m.group(1) + ", " + m.group(2) + ", " + m.group(3) + "]");
}
String s = "<td><a href=/n1180/n1566/n258252/n258599/13361685.html target=_blank>邵宁在中" +
"央企业管理创新暨全面风险管理经验交流会议上的讲话</a></td><td width=70>2011-03-29</td>" +
"<td><a href=/n1180/n1566/n259730/n264153/13" +
"344030.html" +
"target=_blank>《人民日报》:深入学习贯彻《意见》 切实加强和改进新形势下国企思想政治工作</a></td>" +
"<td width=70>2011-03-23</td>";
String reg = "(?i)(?<=a href=)['\"]?([^\\s]+)(?:\\s?target=_blank>)([^<>]+)(?:</a>(?:</?td[^>]*>)+)(\\d{4}-\\d{1,2}-\\d{1,2})";
Pattern pa = Pattern.compile(reg);
Matcher ma = pa.matcher(s);
while(ma.find()) {
System.out.println(ma.group(1) + ma.group(2) + ma.group(3));
}
正则很好玩的..希望你会喜欢上
谢谢了你们的正则确实都可以用.后来我自己修改了一下自己写的.还是有些问题能帮看看怎么修改么? String str3 = "<td><a href=/n1180/n1196/n3145/index.html>机构简介</a></td> </tr> </table><table width=100% border=0 cellspacing=0 cellpadding=0> <tr> <td height=21 width=40></td><td><a href=/n1180/n1196/n3160/index.html>主任致辞</a></td> </tr> </table><table width=100% border=0 cellspacing=0 cellpadding=0> <tr> <td height=21 width=40></td><td><a href=/n1180/n1196/n3175/index.html>领导讲话</a></td> </tr> </table><table width=100% border=0 cellspacing=0 cellpadding=0> <tr> <td height=21 width=40></td><td><a href=/n1180/n1196/n3190/index.html>政策发布</a></td> </tr> </table><table width=100% border=0 cellspacing=0 cellpadding=0> <tr> <td height=21 width=40></td><td><a href=/n1180/n1196/n3205/index.html>通知公告</a></td> </tr> </table><table width=100% border=0 cellspacing=0 cellpadding=0> <tr> <td height=21 width=40></td><td><a href=/n1180/n1196/n3220/index.html>网上公示</a></td> </tr> </table><table width=100% border=0 cellspacing=0 cellpadding=0> <tr> <td height=21 width=40></td><td><a href=/n1180/n1196/n3235/index.html>工作动态</a></td> </tr> </table><table width=100% border=0 cellspacing=0 cellpadding=0> <tr> <td height=21 width=40></td><td><a href=/n1180/n1196/n3250/index.html>计划总结</a></td> </tr> </table><table width=100% border=0 cellspacing=0 cellpadding=0> <tr> <td height=21 width=40></td><td><a href=/n1180/n1196/n3265/index.html>人事信息</a></td> </tr> </table><table width=100% border=0 cellspacing=0 cellpadding=0> <tr> <td height=21 width=40></td><td><a href=/n1180/n1196/n3280/index.html>统计数据</a></td> </tr> </table><table width=100% border=0 cellspacing=0 cellpadding=0> <tr> <td height=21 width=40></td><td><a href=/n1180/n1196/n3295/index.html>财政信息</a></td> </tr> </table><table width=100% border=0 cellspacing=0 cellpadding=0> <tr> <td height=21 width=40></td><td><a href=/n1180/n1196/n3310/index.html>行政许可</a></td> </tr> </table><table width=100% border=0 cellspacing=0 cellpadding=0> <tr> <td height=21 width=40></td><td><a href=/n1180/n1196/n3325/index.html>热点关注</a></td> </tr> </table></td> </tr> <tr> <td height=5></td> </tr> </table></td></tr></table><table width=100% border=0 cellpadding=0 cellspacing=0><tr><td></td></table> <table width=100% border=0 cellpadding=0 cellspacing=0><tr><td> <script language=javascript>function showurl(i){ var val; var html=/n1180/xuzhi/xuzhi-+i+.html; val=showModalDialog(html,'xuzhi','dialogWidth:475px;DialogHeight:480px;status:no;help:no;scroll:no'); if(val==true) window.open('http://message.sasac.gov.cn/consult/index.jsp?category='+i); }function show(){ var val; var html=/n1180/xuzhi/xuzhi-1.html; val=showModalDialog(html,'xuzhi','dialogWidth:475px;DialogHeight:520px;status:no;help:no;scroll:no'); if(val==true) window.open('http://message.sasac.gov.cn/consult/index.jsp?category=1'); } </script><table width=100% border=0 cellspacing=0 cellpadding=0> <tr> <td height=2 bgcolor=#275C9A></td> </tr> <tr> <td height=5 align=center></td> </tr> <tr> <td height=40 align=center><a href=/n1180/n1271/n20575/index.html target=_blank><img src=/n1180/template/7586/images/gk_53.gif width=144 height=34 border=0></a></td>";
//\<td><a href=/n1180/n1566/n258222/n259158/12882101.html target=_blank>黄淑和在中国企业国有产权交易机构协会成立大会上的讲话</a></td>
Pattern p = Pattern.compile("<td><a href=(.*?)\\s+target=_blank>.+?</a></td>");
Matcher m = p.matcher(str3);
while(m.find()){
System.out.println(m.group(1));
}输出是可以匹配的
我的正则是
<td><a href=(.*?)\\s+target=_blank>.+?</a></td>里面有个target=_blank str3居然是匹配的
想知道为什么.又怎么修改
htmlparser就算不能秒杀也差不多了
那我现在就是想问问这个正则为什么不行呢...jar不想用外部的包来实现...下载了用法还没怎么看懂
记得上次说过.*是优先匹配的,.*?是忽略匹配的,但.*有局限性:
体现在:
.*不能匹配行终止符,
.*会尽量匹配多的字符。
下面来看个例子:<a>img</a> and <a>test</a> ....//这里用<a>.*?</a>匹配,他会正确地匹配第一段的字符
//如果是下面这样<a>img <a> test </a> and </a> //他就会错误地匹配到这一段
<a>img <a> test </a>