日期:2014-05-20  浏览次数:20602 次

Java正则表达式
String source = "My name is Java. I send Hello Java. Echo Request!";


String[] result2 = source.split("Java.\\s*(?!I send)");


for(String line:result2){

System.out.println(line);

}
为啥结果是
My name is 
 I send Hello 
Echo Request!

第一个Java. 应该不匹配上啊,因为我不允许其后边是 "几个空格+I send"啊

------解决方案--------------------
"Java.\\s(?!I send)"
------解决方案--------------------
探讨

为什么 \\s可以\\s*不可以

------解决方案--------------------
探讨

为什么 \\s可以\\s*不可以

------解决方案--------------------
探讨

[Quote=引用:]

哇。高手啊。
意思就是说,这种(?!I send)是在匹配上的第一下的位置也就是 Java.的地方,就去环视,环视发现只要没有跟着I send就OK了? 我这个 \\s* 是匹配所有空白啊,为啥不是 "Java. "这个Java.\\s* 匹配完毕再去环视呢? 不是尽最大力量的匹配么?