我正在使用java中的Scanner类来浏览文本文件并提取每个句子。我在我的扫描仪上使用setDelimiter方法到正则表达式:
Pattern.compile("[\\w]*[\\.|?|!][\\s]")
这目前似乎有效,但它会在句子末尾留下空格。是否有一种简单的方法可以匹配最后的空白,但不包括在结果中?
我意识到这可能是一个简单的问题,但我从来没有使用正则表达式,所以很容易:)
答案 0 :(得分:5)
试试这个:
"(?<=[.!?])\\s+"
这使用lookarounds来匹配\\s+
前面的[.!?]
。
如果你想删除标点符号,那么只需将其作为匹配的一部分包含在内:
"[.!?]+\\s+"
这会将"ORLY!?!? LOL"
分为"ORLY"
和"LOL"
答案 1 :(得分:0)
你正在寻找的是一个积极的前瞻。这应该这样做:
Pattern.compile("\\w*[.?!](?=\\s)")