解决方案 »

  1.   


            String a = "C:\\dd\\hellokity\\Desktop\\20140808DLBANK\\lianaCore\\aa\\lianaCore\\c\\lianaCore\\";
            String c = "^(.*?)(lianaCore|perbank)";
            Pattern p = Pattern.compile(c);
            Matcher m = p.matcher(a);        if (m.find()) {
                System.out.println(m.group(1));
            }
      

  2.   

    谢谢Erorr
     String a = "C:\\dd\\hellokity\\Desktop\\20140808DLBANK\\lianaCore\\aa\\lianaCore\\c\\lianaCore\\";
    我用了这个
    String  c = "^[a-zA-Z]?:{1}(\\\\{1}(\\w+)(?<!(lianaCore|perbank)))*";
    输出结果是
    C:\dd\hellokity\Desktop\20140808DLBANK\lianaCor
    能不能改改达到二楼的效果
      

  3.   

     String  c = "^[a-zA-Z]?:{1}(\\\\{1}(\\w+).*?(lianaCore|perbank))";
      

  4.   

    谢谢,受用了,很好很强大,不过我想知道(.*?)这里*和?连在一起是什么意思啊,谢谢!!!
    *和+都是所谓的“贪婪型”元字符,它们在进行匹配时的行为模式是多多益善而不是适可而止的,所以它们会尽可能的从一段文本的开头一直匹配到这段文本的末尾,而不是从这段文本的开头匹配到碰到第一个匹配时为止。
        在不需要这种“贪婪行为”的时候,我们可以使用这些元字符的懒惰版本,懒惰型元字符的写法很简单,只要给贪婪型元字符加上一个?后缀即可。如下:
        *   对应的懒惰型:  *?
            +  对应的懒惰型:  +?
            意思就是找到第一个lianaCore|perbank就停止匹配啦~