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