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]
自己尝试再写.但是没太大进展..才学的正则语法谢谢了

解决方案 »

  1.   

    try...        Pattern p = Pattern.compile("(?is)<td><a\\s+href=([^'\"\\s>]*)\\s+target=_blank>(.*?)</a></td>\\s*<td[^>]*>(\\d{4}-\\d{1,2}-\\d{1,2})</td>");
            String s = yourStr; //网页源文件
            Matcher m = p.matcher(s);
            while(m.find()){
                System.out.println("[" + m.group(1) + ", " + m.group(2) + ", " + m.group(3) + "]");
            }
      

  2.   


    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));
    }
    正则很好玩的..希望你会喜欢上
      

  3.   

    回复见你的这个问题回复http://topic.csdn.net/u/20110412/20/f641ab26-763b-45c0-a947-e9d44485f144.html
      

  4.   


    谢谢了你们的正则确实都可以用.后来我自己修改了一下自己写的.还是有些问题能帮看看怎么修改么? 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居然是匹配的
    想知道为什么.又怎么修改
      

  5.   

    这个
    htmlparser就算不能秒杀也差不多了
      

  6.   

    不是一个软件。。是一个jar包,一个专门获取网络资源的类。简单说就是:网页抓取
      

  7.   


    那我现在就是想问问这个正则为什么不行呢...jar不想用外部的包来实现...下载了用法还没怎么看懂
      

  8.   


    记得上次说过.*是优先匹配的,.*?是忽略匹配的,但.*有局限性:
    体现在:
    .*不能匹配行终止符,
    .*会尽量匹配多的字符。
    下面来看个例子:<a>img</a> and <a>test</a> ....//这里用<a>.*?</a>匹配,他会正确地匹配第一段的字符 
    //如果是下面这样<a>img <a> test </a> and </a>  //他就会错误地匹配到这一段
    <a>img <a> test </a>