问题描述
Stringa="C:\dd\hellokity\Desktop\20140808DLBANK\lianaCore\aa\lianaCore\c\lianaCore\";//Stringc="^.?:{1}(\\{1}(\w+[^(lianaCore|perbank)]))+(\\(lianaCore|perbank){1})*+";//Stringc="^.?:{1}(\\{1}(\w+)[^(lianaCore|perbank)])*";//Stringc="^.?:{1}(\\{1}(\w+)(?!.*(lianaCore|perbank)))*";Patternp=Pattern.compile(c);Matcherm=p.matcher(a);p(m.matches());m.reset();p(m.find());p(m.group(1));p(m.start()+"----"+m.end());如何用正则取出字符串a中从开始到第一个lianaCore或perbank间的字符串
解决方案
解决方案二:
Stringa="C:\dd\hellokity\Desktop\20140808DLBANK\lianaCore\aa\lianaCore\c\lianaCore\";Stringc="^(.*?)(lianaCore|perbank)";Patternp=Pattern.compile(c);Matcherm=p.matcher(a);if(m.find()){System.out.println(m.group(1));}
解决方案三:
谢谢ErorrStringa="C:\dd\hellokity\Desktop\20140808DLBANK\lianaCore\aa\lianaCore\c\lianaCore\";我用了这个Stringc="^[a-zA-Z]?:{1}(\\{1}(\w+)(?<!(lianaCore|perbank)))*";输出结果是C:ddhellokityDesktop20140808DLBANKlianaCor能不能改改达到二楼的效果
解决方案四:
Stringc="^[a-zA-Z]?:{1}(\\{1}(\w+).*?(lianaCore|perbank))";
解决方案五:
引用2楼tcamw_gcab的回复:
谢谢ErorrStringa="C:\dd\hellokity\Desktop\20140808DLBANK\lianaCore\aa\lianaCore\c\lianaCore\";我用了这个Stringc="^[a-zA-Z]?:{1}(\\{1}(\w+)(?<!(lianaCore|perbank)))*";输出结果是C:ddhellokityDesktop20140808DLBANKlianaCor能不能改改达到二楼的效果
直接1楼的很好的
解决方案六:
mark下,回头再看
解决方案七:
引用1楼Erorr的回复:
Stringa="C:\dd\hellokity\Desktop\20140808DLBANK\lianaCore\aa\lianaCore\c\lianaCore\";Stringc="^(.*?)(lianaCore|perbank)";Patternp=Pattern.compile(c);Matcherm=p.matcher(a);if(m.find()){System.out.println(m.group(1));}
谢谢,受用了,很好很强大,不过我想知道(.*?)这里*和?连在一起是什么意思啊,谢谢!!!
解决方案八:
引用6楼yankaiwuzhengbo的回复:
Quote: 引用1楼Erorr的回复:
Stringa="C:\dd\hellokity\Desktop\20140808DLBANK\lianaCore\aa\lianaCore\c\lianaCore\";Stringc="^(.*?)(lianaCore|perbank)";Patternp=Pattern.compile(c);Matcherm=p.matcher(a);if(m.find()){System.out.println(m.group(1));}谢谢,受用了,很好很强大,不过我想知道(.*?)这里*和?连在一起是什么意思啊,谢谢!!!
*和+都是所谓的“贪婪型”元字符,它们在进行匹配时的行为模式是多多益善而不是适可而止的,所以它们会尽可能的从一段文本的开头一直匹配到这段文本的末尾,而不是从这段文本的开头匹配到碰到第一个匹配时为止。在不需要这种“贪婪行为”的时候,我们可以使用这些元字符的懒惰版本,懒惰型元字符的写法很简单,只要给贪婪型元字符加上一个?后缀即可。如下:*对应的懒惰型:*?+对应的懒惰型:+?意思就是找到第一个lianaCore|perbank就停止匹配啦~
解决方案九:
该回复于2014-09-22 08:47:53被版主删除