有这样一个表达式 12365cdnt1234 ,[abc] 不能连续出现.
如果这样写 [abc]{2,} 倒是可以找出错误的表示式,
但是反过来要正确匹配的表示式该怎么写, 用[abc]{1,1}的话 12365ccdnt1234 也匹配了.

解决方案 »

  1.   

    [abc][^abc] 不行,112aa还是匹配了.
      

  2.   

    [abc]{2,}取反 怎么写?
    ^[abc]{2,}不行 
      

  3.   


    String s = "11ab";

    Pattern p = Pattern.compile("[abc]{2,}");
    System.out.println(!p.matcher(s).find());
      

  4.   

    import java.util.regex.Pattern;public class MatcherDuplication {    public static void main(String[] args) {
            String[] strs = {
                    "12365abbcdnt1234",
                    "12365cdnt1234",
                    "12356abcabc1234"
                };
            String regex = "(?:[^abc]*([abc])(?!\\1))*[^abc]*";
            Pattern pattern = Pattern.compile(regex);
            for(int i = 0; i < strs.length; i++) {
                System.out.println(strs[i] + " --> " + pattern.matcher(strs[i]).matches());
            }        
        }
    }
      

  5.   

    让集合[abc]中的字母只能出现一次(不能连续出现)------------------------------------------------
    问题本身就很矛盾!a, b, c 只出现一次,后面又加了一个“不能连续出现”,试问 123abcabc 这种算是出现一次,还是算没有连续出现呢?