在Java中使用正则表达式匹配句子

Gar*_*ary 0 java regex text-segmentation

我正在使用java中的Scanner类来浏览一个文本文件并提取每个句子.我在我的扫描仪上使用setDelimiter方法到正则表达式:

Pattern.compile("[\\w]*[\\.|?|!][\\s]")
Run Code Online (Sandbox Code Playgroud)

这目前似乎有效,但它在句子的末尾留下了空格.有没有一种简单的方法来匹配最后的空白,但不包括在结果中?

我意识到这可能是一个简单的问题,但我从来没有使用正则表达式,所以很容易:)

pol*_*nts 5

试试这个:

"(?<=[.!?])\\s+"
Run Code Online (Sandbox Code Playgroud)

这使用了先前匹配的lookarounds.\\s+[.!?]


如果你想删除标点符号,那么只需将其作为匹配的一部分包含在内:

"[.!?]+\\s+"
Run Code Online (Sandbox Code Playgroud)

这将拆分"ORLY!?!? LOL""ORLY""LOL"