<a>很好:</a><a href=\"/huangshan-10HG-pingjia.html\">55</a><a>中等:</a><a href=\"/huangshan-10ZD-pingjia.html\">16</a><a>很差:</a><span>0</span>怎样用正则匹配出很好的评价数:55
当很好评价数为0时,<a>标签变成<span>标签,(PS:href后面的地址不确定,可能发生变动)正则

解决方案 »

  1.   

    如果前面是固定的话可以这样     public static void main(String[] args){
          String html = "<a>很好:</a><a href=\"/huangshan-10HG-pingjia.html\">55</a><a>很好:</a><span>0</span>";
          Matcher m = Pattern.compile("<a>很好:</a>\\<((?i)a\\s+.+?|(?i)span)>(.+?)<").matcher(html);
          while(m.find()){
          System.out.println(m.group(2));
          }
          }
      

  2.   

    System.out.println(m.group(2)); 这个最好取0可以吗,因为代码是公用的,这个改的话会比较麻烦
      

  3.   


    public static void main(String[] args) throws Exception {
    String str = "<a>很好:</a><a href=\"/huangshan-10HG-pingjia.html\">55</a><a>中等:</a><a href=\"/huangshan-10ZD-pingjia.html\">16</a><a>很差:</a><span>0</span>";
    Matcher m = Pattern.compile("很好:.*?>(\\d+)<.*").matcher(str);
    if(m.find()){
    System.out.println(m.group(1));
    }
    }
      

  4.   


    public class T {
         public static void main(String[] args){
          String html = "<a>很好:</a><a href=\"/huangshan-10HG-pingjia.html\">55</a><a>很好:</a><span>0</span>";
          Matcher m = Pattern.compile("<a>(很好:)</a>\\<((?i)a\\s+.+?|(?i)span)>(.+?)<").matcher(html);
          while(m.find()){
          System.out.println(m.group(1) + m.group(3));
          }
          }
    }
      

  5.   

    很好:是稳定的,就判断紧接包含它的<a>节点之后的<a>或<span>节点的值
      

  6.   


    (?<=X)\\d+  这种能匹配吗?暂时我只能从group(0)中取评论数
      

  7.   

    先以贪婪方式将<..>的内容都去掉这样就只剩下
    很好:55中等:16很差:0然后取夹在 很好: 与 中等: 之间的值
      

  8.   

    用group0的话用零宽断言,但是look behind不好用(不支持不定量词),就用look ahead"(?<=>)\\d+(?=(</a>|</span>)<a>中等:</a>)"
      

  9.   


    input = input.replaceAll("<.*?>", "");
    input.substring(0, input.indexOf("中等:"));
      

  10.   


    那我最后的情况是:
      很差:</a><span>0</span>  这样,会取不到“很差:0”吧
      

  11.   

    String s="<a>很好:</a><a href=\"/huangshan-10HG-pingjia.html\">55</a><a>中等:</a><a href=\"/huangshan-10ZD-pingjia.html\">16</a><a>很差:</a><span>0</span>";
    Matcher m=Pattern.compile("(?<=>)\\d+(?=(</a>|</span>))").matcher(s);
    while(m.find())
       System.out.println(m.group(0));
      

  12.   


         public static void main(String[] args){
          String html = "<a>很好:</a><a href=\"/huangshan-10HG-pingjia.html\">55</a><a>很好:</a><span>0</span>";
          html = html.replaceAll("<.+?>", "");
          System.out.println(html);
          }但是所有的都会被去掉哦