需要一个正则表达式,能够正确获得下列字符串中每一对<td>...</td>之间的代码"<tr>
    <td ..........................\r\n"+
       " ...> data1</td>\r\n" +
    <td ..........................\r\n"+
       " ...> data2</td>\r\n" +
    <td ..........................\r\n"+
       " ...> data3</td>\r\n" +
    <td ..........................\r\n"+
       " ...> data4</td>\r\n" +
    <td ..........................\r\n"+
       " ...> data5</td>\r\n" +
    <td ..........................\r\n"+
       " ...> data6</td>\r\n" +
</tr>\r\n"
格式就是这样的,无法改变
需要读取每一个 <td>..</td>,包括数据和格式
求一个正则表达式
请各位大侠多多指教

解决方案 »

  1.   

    这不是一个正则就能解决的,需要一个算法。
    我的思路如下:
    1.利用String类来读取第一对<>标签,包括之间的内容。
    2.如果是<td ...>这种形式,就去读取第二对<>标签,如果是</td>则读取之间的内容。
      

  2.   

    其实方法很多
    1、用jquery获取所有td之间的值
    2、用xml解析,获取所有td之间的值
    3、正则^<td>*</td>$
      

  3.   


    Pattern p1 = Pattern.compile("(<td[.,\\s]*>)(.*)(</td>)");
    Matcher m1 = p1.matcher("dfd<td ..........................\r\n ...> data1</td>");
    while(m1.find()) {
    System.out.println(m1.group(2));
    }这个就可以了,匹配,然后用分组找出你想要的。
      

  4.   


    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
    public class Main {
        public static void main(String[] args) {
            //需要一个正则表达式,能够正确获得下列字符串中每一对<td>...</td>之间的代码
            String str = "<tr>  " +
                    "<td ..........................\r\n...> data1</td>\r\n" +
                    "<td ..........................\r\n...> data2</td>\r\n" +
                    "<td ..........................\r\n ...> data3</td>\r\n" +
                    "<td ..........................\r\n...> data4</td>\r\n" +
                    "<td ..........................\r\n...> data5</td>\r\n" +
                    "<td ..........................\r\n...> data6</td>\r\n" +
                    "</tr>\r\n";
            Pattern p = Pattern.compile("<td .*\\s*.*>(.*)</td>");
            Matcher m = p.matcher(str);
            while(m.find()) {
                System.out.println(m.group());
            }
        }
    }