<tr>
<td class="">10.5.238.184</td>
<td class="">QM_BRK_11</td>
<td class="">NBL.OUT.FILTER.REQ</td>
<td class="">0</td>
</tr>

<tr>
<td class="red">10.5.238.184</td>
<td class="red">QM_BRK_11</td>
<td class="red">NBL.OUT.MSGSERVER.REQ</td>
<td class="red">18753</td>
</tr>我获得一个页面文件,现在我要过滤,只要class="red"的  比如:<td class="red">10.5.238.184</td>
然后在控制台输出,。求解,能提供代码,

解决方案 »

  1.   

    实在是用不着正则,
    只需判断每一行是否以<td class="red">开头即可,如果是就输出。
      

  2.   

    最土就是这样:
    String html = "<tr>\n<td class=\"\">10.5.238.184</td>\n<td class=\"\">QM_BRK_11</td>\n<td class=\"\">NBL.OUT.FILTER.REQ</td>\n<td class=\"\">0</td>\n</tr>\n\n<tr>\n<td class=\"red\">10.5.238.184</td>\n<td class=\"red\">QM_BRK_11</td>\n<td class=\"red\">NBL.OUT.MSGSERVER.REQ</td>\n<td class=\"red\">18753</td>\n</tr>";Pattern pattern = Pattern.compile("<td class=\"red\">[^<]*</td>");Matcher matcher = pattern.matcher(html);while (matcher.find()) {
                System.out.println(matcher.group(0));
    }
    局限性就是td里面不能有其它属性,如果要能智能点,那么就还需要修改。
      

  3.   

    3QU,
    请问System.out.println(matcher.group(0));
    matcher.group(0)是什么意思。
      

  4.   

    group(0):取出匹配的整段
    数字还可以是1~n,那么就是取出制定的匹配区,比如:Pattern pattern = Pattern.compile("<td class=\"red\">([^<]*)</td>"); // 多加了小括号
    System.out.println(matcher.group(1)); // 1,代表第一个小括号
      

  5.   

    给你个匹配能力更强的写法:String html = "<tr>\n<td class=\"\">10.5.238.184</td>\n<td class=\"\">QM_BRK_11</td>\n<td class=\"\">NBL.OUT.FILTER.REQ</td>\n<td class=\"\">0</td>\n</tr>\n\n<tr>\n<td a=\"a\" class=\"red\" >10.5.238.184</td>\n<td class=\"red\"  b=\"b\">QM_BRK_11</td>\n<td class=\"red\">NBL.OUT.MSGSERVER.REQ</td>\n<td class=\"red\">18753</td>\n</tr>";Pattern pattern = Pattern.compile("<td\\s+([^>]+\\s+)*class=\"red\"\\s*([^>]+\\s*)*>([^<]*)</td>");Matcher matcher = pattern.matcher(html);while (matcher.find()) {
           System.out.println(matcher.group(0));
           System.out.println(matcher.group(3));
    }