求一正则表达式
比如一段英文:'Sorry, I can't go out today!'
这么切割成一个一个的单词Sorry I can't go out today.
我显示根据空格split,然后用replaceAll("\\p{P}", "");去掉所有标点符号,
但是can't也变成cant了,有什么更好的方法吗?
[解决办法]
\\p{P} 代表什么字符?
这样试试
replaceAll("[\\p{P}&&[^']]", "");
[解决办法]
\\p{P}\\s+这样去split试试
[解决办法]
str = str.replaceAll("(?<![a-zA-Z])'", "") //先将前面没有字母的 ' 符号删掉
.replaceAll("[\\p{Punct}&&[^']]", "");
[解决办法]
String s="'Sorry, I can't go out today!'";
//先把开头和结尾的'以及'前面不是字母的以及除了'外的其它标点符号先替换掉,再用空白字符进行分割
String[] sArray=s.replaceAll("^'+
[解决办法]
'+$
[解决办法]
(?<![A-Za-z])'+
[解决办法]
[\\p{Punct}&&[^']]+","").split("\\s+");
System.out.println(sArray.length);
for(String str:sArray)
System.out.println(str);
Pattern p = Pattern.compile("'
[解决办法]
,");
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());