Java正则表达式[a-z]也匹配数字和大写

时间:2016-02-25 15:43:39

标签: java regex

我有大量的文字。目标是将点与空格分开,这些空格仅在句子的末尾,而不是缩写,时间,日期等。这样做:

    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应该与这个正则表达式不匹配。”。

1 个答案:

答案 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