Matcher m = Pattern.compile("<inputname=\"title\"type=\"hidden\"id=\"title\"value=\"(.*?)\"/>").matcher(html);
if(m.find()){
temp.setTitle(m.group(1));
}现在不知道为什么这个m.group(1)始终取不出来,而打断点看的时候m.group(0)是有值的

解决方案 »

  1.   

    group(0) 是匹配整个串,你把group(0)用System.out显示出来看看吧。
    可能group(1)匹配到了空串。另外,括号里面建议你这么写:([^\"]*)
      

  2.   


    <input\\s*.+?\\s*id=\"title\"\\s*value=\"(.+?)\"\\s*/>改写成这样试试。。
      

  3.   


    public static void main(String[] args) { String str = "<input name=\"title\" type=\"hidden\" id=\"title\" value=\"test\" />"; Pattern pattern = Pattern
    .compile("<input\\s*name=\"\\w*\"\\s*type=\"\\w*\"\\s*id=\"\\w*\"\\s*value=\".*\"\\s*/>");
    Matcher matcher = pattern.matcher(str);
    while (matcher.find()) {
    System.out.println(matcher.group());
    }
    }
      

  4.   

    和你html內容有關,如果你把模式串作為匹配對象,同時替換(.*?)部份為abc或者a\"bc
    還是可以找到的所以查看一下這部份在html中到底是什麽再作針對性修改
      

  5.   

    如果你是需要找出input标签的话,可以这样 public static void main(String[] args) {
    String html = "<input id=\"title\" value=\"a\"/><input id=\"title\" value=\"b\"/>";
    Matcher m = Pattern.compile("<input\\s+.+?/>").matcher(html);
    while(m.find()){
    System.out.println(m.group());
    }
    }