<td><table><tr><td>xx</td></tr></table></td><td>yyy</td>
如果我要匹配<td></td>并且中间不包含<table>的正则表达式,该如何写?

解决方案 »

  1.   

    你还是turn to XML 解析器吧。
      

  2.   

    <a>我是程序设计师</a>
    <a>失败是成功之母</a>
     如何匹配<a></a>中间的字符串,并且字里没有‘程序设计’四个字呢?
    我写"<a>(.*?(?:程序设计))</a>"好象还是会匹配出来~
      

  3.   

    package temp;import java.io.File;
    import java.util.ArrayList;
    import java.util.Iterator;
    import java.util.List;
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;public class FT { /**
     * @param args
     */
    public static void main(String[] args) {
    String s="<td>yyy</td>";
    System.out.println(s);
    Pattern p=Pattern.compile("<td>.*[^(yyy)].*</td>");
    Matcher m=p.matcher(s);
    if(m.matches()){
    System.out.println("ok");
    }else{
    System.out.println("fail");
    }
    }
    }
      

  4.   

    s = "<td>xyyyyyyx</td>",这种情况,他也成立?
      

  5.   

    ee,是错了,这样好像可以了:
    package temp;import java.io.File;
    import java.util.ArrayList;
    import java.util.Iterator;
    import java.util.List;
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;public class FT { /**
     * @param args
     */
    public static void main(String[] args) {
    String s="<td>xyyyyyyx</td>";
    //String s="<td>yyyasdxx</td>";
    System.out.println(s);
    Pattern p=Pattern.compile("<td>[^(yyy)]*</td>");
    Matcher m=p.matcher(s);
    if(m.matches()){
    System.out.println("ok");
    }else{
    System.out.println("fail");
    }
    }
    }
      

  6.   

    ("<td>[^(yyy)]*</td>")s="<td>x1111yx</td>"
    只要有y就不能匹配
      

  7.   

    String regexp = "<td>.*?(?=yyy)</td>";
    String sourceStr = "<td>yyycccyyyx1yy11y1dsaxxxyyy</td>";
    好象也一个也匹配不了,那(?:)应该如何使用呢?
      

  8.   

    <td>((?!<table).)*?</td>测试页面:(推荐)
    http://www.regexlab.com/zh/workshop.asp?pat=%3Ctd%3E%28%28%3F%21%3Ctable%29.%29*%3F%3C/td%3E&txt=%3Ctd%3E%3Ctable%3E%3Ctr%3E%3Ctd%3Exx%3C/td%3E%3C/tr%3E%3C/table%3E%3C/td%3E%3Ctd%3Eyyy%3C/td%3E&dlt=0
      

  9.   

    想到一个办法可以判断是否包含字串,用取反
    比如要不包含abc的字符串
    那就:
    package temp;import java.util.regex.Matcher;
    import java.util.regex.Pattern;public class A { /**
     * @param args
     */
    public static void main(String[] args) {
    // TODO Auto-generated method stub
    Pattern p=Pattern.compile(".*abc.*");
    String s="abaabbcasabdac";
    Matcher m=p.matcher(s);
    if(!m.matches()){
    System.out.println("不包含abc");
    }
    }}
      

  10.   

    <a>((?!程序设计).)*?</a>测试页面:(推荐)
    http://www.regexlab.com/zh/workshop.asp?pat=%3Ca%3E%28%28%3F%21%u7A0B%u5E8F%u8BBE%u8BA1%29.%29*%3F%3C/a%3E&txt=%3Ca%3E%u6211%u662F%u7A0B%u5E8F%u8BBE%u8BA1%u5E08%3C/a%3E%0D%0A%3Ca%3E%u5931%u8D25%u662F%u6210%u529F%u4E4B%u6BCD%3C/a%3E&dlt=0
      

  11.   

    [a|b|c]这种方式只能对字符进行选择,如果要对字符串进行选择呢?