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

时间:2010-04-16 01:07:54

标签: java regex text-segmentation

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

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

这目前似乎有效,但它会在句子末尾留下空格。是否有一种简单的方法可以匹配最后的空白,但不包括在结果中?

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

2 个答案:

答案 0 :(得分:5)

试试这个:

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

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


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

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

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

答案 1 :(得分:0)

你正在寻找的是一个积极的前瞻。这应该这样做:

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