当前位置: 代码迷 >> Java相关 >> Java正则表达式,该如何处理
  详细解决方案

Java正则表达式,该如何处理

热度:1656   发布时间:2013-02-25 21:50:36.0
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* 匹配完毕再去环视呢? 不是尽最大力量的匹配么?