正则表达式
如何可能达到以下的效果:String 的match方法:"abc"匹配"abcde" 返回匹配成功
"abc"匹配"abc"返回匹配失败就是如果数据不是abc就返回true"abc"匹配[正则表达式]--->这个正则怎么写?表达的不清楚……大概就这么个意思了

解决方案 »

  1.   

    我的意思就是 
     正则表达式怎么写,可以match方法对于所有 不equals("abc")的串都返回true
      

  2.   

    String中没有match(),只有matches(),这个方法时对整个字符串进行匹配,这样的话无法按你的要求进行,除非:
    调用这个方法时候用非逻辑运算符:!
    比如String s1="abc";
    String s2="abccd";
    String s3="abcmn";
    System.out.println(!s1.matches ("abc"));//打印false
    System.out.println(!s2.matches ("abc"));//打印true
    System.out.println(!s3.matches ("abc"));//打印true
      

  3.   


    public static void main(String rags[]){
    String[] arr = {"abc","abcx","xabc","axbc",""};
    for(int i=0;i<arr.length;i++){
    if(arr[i].matches("|.*?[^(abc)].*?")){
    System.out.println("true");
    }else{
    System.out.println("false");
    }
    }
    }
      

  4.   

    这个 正则对 abcabc这种形式的 串,校验是失败的,能大概解释一下规则吗?
      

  5.   


    "|.*?[^(abc)].*|.*?abc.+|.+?abc.*"
    //期望更好的答案,但是,正则的效率是个问题啊
      

  6.   

    好吧,我也被若鱼的迷惑住了,实际上那个.*?[^(abc)].*?对于aaa,bbb,ccc也是会返回false的。
    也就是说13楼得那个仍然不行//楼主,这是你逼我的
    String[] arr = { "abc", "abcx", "xabc", "axbc", "", "abcabc" };
    for (int i = 0; i < arr.length; i++) {
    if (arr[i].matches(".{0,2}|.{4,}|[^a][^b][^c]|[^a][^b]c|[^a]b[^c]|[^a]bc|a[^b][^c]|a[^b]c|ab[^c]")) {
    System.out.println("true");
    } else {
    System.out.println("false");
    }
    }
    /*
    任意字符0-2个  true
    任意字符4-∞个   true
    剩下的三个字符abc a 表示1 ^a 表示0
    剩下的也无非就是000,001,010,011,100,101,110返回true  111代表abc 返回false
    或了这么多次的表达式,效率什么的就完全不用考虑了。
    坑爹的需求啊,好好的!"XXX".matches("abc")不用,非得用这恶心的玩自己。楼主你赢了,要不是今天闲的蛋疼。
    */
      

  7.   

    你的意思是不是首先必须是abc,然后后面必须跟着其他的东西啊。单单的abc也是falseString regex = abc.+;
    这个就可以了
      

  8.   


    String[] arr = {"abc","abcx","xabc","axbc","abcabc","aaa","def"};
            for(int i=0;i<arr.length;i++){
                if(arr[i].matches("|[^a]+|.*?a(?!bc).*|.*?abc.+|.+?abc.*")){
                 /*
                  (1)|           :空串
                  (2)[^a]+       :整个字符串不出现a
                  (3).*?a(?!bc).*:字符串出现a的时候,后面不能是bc
                  (4).*?abc.+    :abc后面还有其他字符
                  (5).+?abc.*    :abc前面还有其他字符
                  */
                    System.out.println("true");
                }else{
                    System.out.println("false");
                }
            }
    //不知道现在是不是可以,求验证
      

  9.   

    String regex="[^abc]+" 
    String regex="[^[abc]}\\w" 
    试试
      

  10.   

    其实出这个问题,目的是为了找个
    直接可以对一个串进行非操作正则的写法
    比如所有!equals "abc"的正则
    "abd".match("^(abc)") <----这个肯定不行看来没有这么方便的写法了!结贴,大家辛苦了