Java在句号空白处拆分句子?

Java在句号空白处拆分句子?,java,regex,punctuation,Java,Regex,Punctuation,我需要将一个文本文件拆分为单独的句子,但目前它也拆分小数点。如何在有句号的位置拆分,然后是空格。在拆分中使用此正则表达式,以便它不会在数字之间拾取任何内容。此正则表达式表示不后跟数字的句号 \\.(?!\\d) 例如: String line = "this a. sample 100.100 test.line."; String []sentences = line.trim().split("\\.(?!\\d)"); 输出: this a sample 100.100 test l

我需要将一个文本文件拆分为单独的句子,但目前它也拆分小数点。如何在有句号的位置拆分,然后是空格。

在拆分中使用此正则表达式,以便它不会在数字之间拾取任何内容。此正则表达式表示不后跟数字的句号

\\.(?!\\d)
例如:

String line = "this a. sample 100.100 test.line.";
String []sentences = line.trim().split("\\.(?!\\d)");
输出:

this a
 sample 100.100 test
line
ab.
cd 1.3 ef.
gh

您可能希望通过在拆分周围添加可选的
\\s*
来改善这一点。

如果希望在拆分后的结果中包含
,您可以尝试在每个空格(
\\s
)上拆分,该空格前面有句号
[.]

yourString.split("(?<=[.])\\s+");

如果您不想在结果中包含
,请跳过并使用
[.]\\s+

String parts[] = str.split("\\. " ); 

应该使用正则表达式:
“\\.\s”
,但这适用于任何空格。如果您需要一个特定的空格,请用适当的字符替换
\s
。那么,只需按点分割,然后再加空格?看起来你不需要正则表达式。它会分割所有空格,这意味着你永远无法分割完整的句子。使用
“\\.[^0-9]”
?@antoh-yes有什么真正的区别吗。使用您的正则表达式,它将从下面的示例
sample.X test
中删除
.X
,该示例除了给出随机结果之外什么都不做。不起作用,在任何空格处拆分,然后意味着每个单词都被视为一个句子。我现在有了它,我将包括一个条件!还是一个?也
String parts[] = str.split("\\. " );