部分源文件: <td valign="middle" height="30" width="146" style="word-wrap:break-word">
<!--<div align="center"><a href="javascript:Submit(singerform.singername[2].value)">A-Lin</a></div>
-->
<div align="center"><a href="/user/querysinger.do?singerName=A-Lin">A-Lin</a></div>
<input type=hidden name=singername value="A-Lin" >
  </td>
要求用java正则表达式取出这个网页源文件中(这种<input type=hidden name=singername value="A-Lin" >)所有的歌手名,这个正则表达式怎么写?

解决方案 »

  1.   


    public static void main(String[] args) {
    String str = "<div align=\"center\"><a href=\"/user/querysinger.do?singerName=A-Lin\">A-Lin</a></div>\r\n";
    str += "<input type=hidden name=singername value=\"A-Lin\" >\r\n";
    str += "</td>\r\n";
        Matcher m = Pattern.compile("(?s)\\<input.*?name\\s*=\\s*\"?singername\"?\\s+value=\"?(.*?)\"?\\s*\\>").matcher(str);
        while(m.find()){
         System.out.println(m.group(1));
        }
    }
      

  2.   

    多谢啦,这个问题解决了;自己测试了一遍,基本上过了
    有小问题
    1."(?s)\\<input.*?name\\s*=\\s*\"?singername\"?\\s+value=\"?(.*?)\"?\\s*\\>"
    这个(?s)是干嘛用的?表示什么意思?
    2.当我用^$匹配开始和结束的时候:^\\<input\\s+type=\"?hidden\"?\\s+name=\"?singername\"?\\s+value=\"?(.*?)\"?\\s*\\>$,表示匹配这句话,为什么又没有匹配到?
    分还是给你,帖子也结了……