。abc。abc。abc (区间内有abc3个字母但是不是这样的顺序)
用abc作为分段,得到其中的第一段???或者怎样判断一个字串没有不包含 abc (同上也存在abc3个字母)
如果是包含abc就简单了,但是反过来怎样能够表达呢??? (.*)abc
只能得到 。abc。abc
我是使用jdk的库        Pattern p = Pattern.compile("(.*)abc");
        Matcher m = p.matcher("11111cba1111111abc11111111cba111111abc111"); //除了abc其他字符任意
        while (m.find()) {
            System.out.println(":::::::::::::;[" + m.group(1) + "]");
        }print :
:::::::::::::;[11111cba1111111abc11111111cba111111]不能使用间接的方法,只能一次用一个表达式,非正则表达式解法请不要提了

解决方案 »

  1.   

    没完全明白楼主的意思,如果只要
    用abc作为分段,得到其中的第一段???
    简单地:
       Pattern p=Pattern.compile("abc"); 
      String r[]=p.split("11111cba1111111abc11111111cba111111abc111"); 
           System.out.println(r[0]);
      

  2.   

    如果是只要abc作为分隔
     Pattern p=Pattern.compile("[abc]+");
      

  3.   

    如果是一定要abc三个字符连在一起(顺序无所谓)
    这样可以:
    Pattern p=Pattern.compile("[abc][abc][abc]"); 

    Pattern p=Pattern.compile("[abc]{3}"); 
      

  4.   

    StringTokenizer类
    split()
    都可以的
      

  5.   

    或者怎样判断一个字串没有不包含 abc (同上也存在abc3个字母)
    如果是包含abc就简单了,但是反过来怎样能够表达呢???
    -------------------------------------------------------------------
    "没有不包含 abc "什么意思?
    感觉楼主想说"不包含",但是根据双重否定就是肯定的定律"没有不包含 abc "的意思就是"包含abc".
      

  6.   

    回复人: keiy() ( ) 信誉:100 没完全明白楼主的意思,如果只要
    用abc作为分段,得到其中的第一段???
    简单地:
       Pattern p=Pattern.compile("abc"); 
      String r[]=p.split("11111cba1111111abc11111111cba111111abc111"); 
           System.out.println(r[0]);
    ------------------------------------------------
    是这个意思,但是这个是很长的一段表达式中的一段,我没办法单独这样分析
    11111cba1111111abc11111111cba111111abc111是我需要匹配的字符串中的一段罢了,我需要使用match.group(i) 取得其中的很多部分,11111cba1111111 作为其中的第二部分,但是我只能取得11111cba1111111abc11111111cba111111这不是我想要的。
    --------------同上我不能用StringTokenizer这样的方法回复人: wb0622(波波) ( ) 信誉:100 
    "没有不包含 abc "什么意思?
    感觉楼主想说"不包含",但是根据双重否定就是肯定的定律"没有不包含 abc "的意思就是"包含abc".
    ---------------------------
    不错,是写错了,但是 【如果是包含abc就简单了,但是反过来怎样能够表达呢】应该排除了这个可能吧
      

  7.   

    回复人: keiy() ( ) 信誉:100 如果是一定要abc三个字符连在一起(顺序无所谓)
    这样可以:
    Pattern p=Pattern.compile("[abc][abc][abc]"); 

    Pattern p=Pattern.compile("[abc]{3}"); 
    ------------------------
    其实是用abc(3有顺序的)分段,我想要第一个abc之前的但是他会匹配到最后一个abc之前都给我匹配出来了,所以我想有没有办法判断里面没有abc字样,这样就不会匹配到最多的结果了,但是正则表达式好像不能表示出这个来。
      

  8.   

    有点明白了,试试:
     Pattern p = Pattern.compile("(.*?)abc");
    结果为
    :::::::::::::;[11111cba1111111]
    :::::::::::::;[11111111cba111111]