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

Java正则表达式[a-z]也匹配数字和大写字母,java,regex,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), " "

我有大量的文本。我们的目标是用空格分隔点,空格只在句末,而不是缩写、时间、日期或其他形式。这样做:

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

我建议使用:

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
使用lookback(
?也一样,我建议使用它:

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

使用lookback(
)也有同样的事情。你能举一个完整的句子作为例子,突出显示你想匹配的和不想匹配的吗?如果我理解正确,你想匹配所有的点,但后面有空格的点除外?@Korgen Text可以是这样的:“那只猫重5.7公斤。相当中等的猫。”我想把单词“公斤”和“猫”附近的点匹配起来,使它们成为“公斤”和“猫”。我的正则表达式也对“5.7”进行匹配。@Antos you regex工作正确——它在
kilos
之后找到点。但是
String\replace()
不知道您需要只替换那个特定的点,文本中的所有点也是如此。@SashaSalauyou是的,很好。现在我正在尝试更改它。谢谢。您能举一个完整的句子作为示例,突出显示您希望匹配的内容和不希望匹配的内容吗?如果我理解正确,您希望不匹配吗o匹配所有点,但后面有空格的点除外?@Korgen文本可以是这样的smth:“那只猫重5.7公斤。相当中等的猫。”我想匹配单词“公斤”和“猫”附近的点,使它们成为“公斤”和“猫”。我的正则表达式对“5.7”进行匹配“同样如此。@Antos you regex可以正确工作——它在
kilos
之后找到点。但是
String#replace()
不知道您需要只替换那个点,文本中的所有点也是如此。@SashaSalauyou是的,很好。现在我正在尝试更改它。谢谢。”。