当前位置: 代码迷 >> J2EE >> 求一正则表达式解决思路
  详细解决方案

求一正则表达式解决思路

热度:5569   发布时间:2013-02-25 21:40:58.0
求一正则表达式

比如一段英文:'Sorry, I can't go out today!'
这么切割成一个一个的单词Sorry I can't go out today.
我显示根据空格split,然后用replaceAll("\\p{P}", "");去掉所有标点符号,
但是can't也变成cant了,有什么更好的方法吗?\\p{P}\\s+这样去split试试用substring这个属性返回一个新字符串试试(?<![A-Za-z])'+[\\p{Punct}&&[^']]+","").split("\\s+");
System.out.println(sArray.length);
for(String str:sArray)
   System.out.println(str);
str = str.replaceAll("(?<![a-zA-Z])'", "")     //先将前面没有字母的 ' 符号删掉
   .replaceAll("[\\p{Punct}&&[^']]", "");\\p{P} 代表什么字符? 

这样试试
replaceAll("[\\p{P}&&[^']]", "");,");
 Matcher m = p.matcher("'Sorry, I can't go out today!'");
 StringBuffer sb = new StringBuffer();
 while (m.find()) {
     m.appendReplacement(sb, "");
 }
 m.appendTail(sb);
 System.out.println(sb.toString());
你用substring吧,我刚才试了一下,不会把can't变成cantAPI查的源码 完美解决

Pattern p = Pattern.compile("''+$

String s="'Sorry, I can't go out today!'";
//先把开头和结尾的'以及'前面不是字母的以及除了'外的其它标点符号先替换掉,再用空白字符进行分割
String[] sArray=s.replaceAll("^'+