如果一个字符串中有多个div但是我想提取的是最大范围的div 内容。例如:<div id="frame">jdkjk<div id="blank">fasfdfdsf</div></div>
在这个字符串中,我想提取的是最外面的div之间的内容

解决方案 »

  1.   

    1、通过for循环判断第一个 >的位置
    2、通过反向for循环判断第一个<的位置
    3、substring函数截取
      

  2.   


    String str = "<div id=\"frame\">jdkjk<div id=\"blank\">fasfdfdsf</div></div>";
    Matcher m = Pattern.compile("(<div.*/div>)", Pattern.DOTALL).matcher(str);
    if (m.find()) System.out.println(m.group(1));
      

  3.   

    如果只要中间内容,两端<div>丢弃,如下
    String str = "<div id=\"frame\">jdkjk<div id=\"blank\">fasfdfdsf</div></div>";
    Matcher m = Pattern.compile("(<div>(.*)</div>)", Pattern.DOTALL).matcher(str);
    if (m.find()) System.out.println(m.group(2));
      

  4.   

    一个嵌套的div最外层内容是吧是吧...就是第一个> 和第二< 之间的就是string...如果不是这样就很难了哦...
      

  5.   

    楼上厉害,请问现在常不常使用Matcher和Patter?
      

  6.   

     不知道LZ 是想在服务器端获取 ,还是在前端获取   
     服务器端的话  用截取的方法是可以的
     在前端就更简单了  #("#frame").html() 就可以了
      

  7.   

    用正则表达式,果然很好。不过用for循环实现也可以吧。
      

  8.   

    java解析 html 还是用 jsoup比较简单。