0

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

Pattern.compile("[\\w]*[\\.|?|!][\\s]")

这目前似乎有效,但它在句子末尾留下了空格。有没有一种简单的方法可以匹配末尾的空格但不将其包含在结果中?

我意识到这可能是一个简单的问题,但我以前从未使用过正则表达式,所以放轻松:)

4

2 回答 2

5

试试这个:

"(?<=[.!?])\\s+"

这使用环视来匹配\\s+前面的[.!?].


如果您还想删除标点符号,则只需将其作为匹配的一部分包括在内:

"[.!?]+\\s+"

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

于 2010-04-16T01:47:01.880 回答
0

您正在寻找的是积极的前瞻性。这应该这样做:

Pattern.compile("\\w*[.?!](?=\\s)")
于 2010-04-16T01:12:19.013 回答