我有大量的文字。目标是将点与空格分开,这些空格仅在句子的末尾,而不是缩写,时间,日期等。这样做:
String regex = "[a-z](\\.)\\s";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(text);
if(matcher.find())
text = text.replace(matcher.group(1), " " + matcher.group(1));
结果不仅仅是“句子的结尾。下一句。”,但是这样的事情也是如此:“有些数字信息16.15应该与这个正则表达式不匹配。”。
答案 0 :(得分:0)
我建议使用Matcher#replaceAll()
:
Pattern regex = Pattern.compile("([a-z])\\.(\\s|$)");
text = regex.matcher(text).replaceAll("$1 .$2"); // $1 is for letter, $2 is for space/end of line
使用lookbehind(?<=
)同样的事情:
Pattern regex = Pattern.compile("(?<=[a-z])\\.(\\s|$)");
text = regex.matcher(text).replaceAll(" .$1"); // $1 now is for space/end of line