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)); }
谢谢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 能不能改改达到二楼的效果
String c = "^[a-zA-Z]?:{1}(\\\\{1}(\\w+).*?(lianaCore|perbank))";
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));
}
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
能不能改改达到二楼的效果
*和+都是所谓的“贪婪型”元字符,它们在进行匹配时的行为模式是多多益善而不是适可而止的,所以它们会尽可能的从一段文本的开头一直匹配到这段文本的末尾,而不是从这段文本的开头匹配到碰到第一个匹配时为止。
在不需要这种“贪婪行为”的时候,我们可以使用这些元字符的懒惰版本,懒惰型元字符的写法很简单,只要给贪婪型元字符加上一个?后缀即可。如下:
* 对应的懒惰型: *?
+ 对应的懒惰型: +?
意思就是找到第一个lianaCore|perbank就停止匹配啦~