当前位置: 代码迷 >> Eclipse >> java replaceall的一个有关问题
  详细解决方案

java replaceall的一个有关问题

热度:30   发布时间:2016-04-23 12:49:02.0
java replaceall的一个问题
String ss = "I am a student,I come from tianjin";
String Keywords = ss.replaceAll("I[^(come)]come","")
.replaceAll("tianjin", "");
System.out.println(Keywords);

我想从I匹配到come之前(一定是要检测在这个单词之前,单个字符不行),将从I到come的所有字符替换掉,然后再替换后面的tianjin,最后输出from,请问我这么写为什么不对?应该怎么写才行。非常感谢。

------解决方案--------------------
*
*?
两者都是修饰其前面的一个字符或整个括号,而不会作用于后面的字符


探讨

*是贪婪匹配的,它会先一次性匹配到字符串的结尾,然后不断回溯
*?是非贪婪匹配的,它每往后匹配一个字符都会去看看后面的come满足不满足条件

如果我没记错的话应该是这样

引用:

ticmy朋友,?come 就表示come这个字符串出现一次或0次吗?如果(come)?表示什么意思呢?这俩有什么区别吗?我验证过"I am a student,I come fro……
  相关解决方案