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

标签 java regex text-segmentation

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

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

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

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

最佳答案

试试这个:

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

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

<小时/>

如果您还想删除标点符号,只需将其包含在匹配中即可:

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

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

关于java - Java中使用正则表达式匹配句子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2649975/

相关文章:

regex - Zend Route Regex 和可选参数

Python Regex - 在每个字符后拆分字符串

ruby - 提取句子/字符串中的最后一个词?

eclipse - 有谁知道我如何包含 sun.lwawt.LWComponentPeer;在我在 Windows 上运行的代码中?

java - Android 上的 Apache Commons IO

php - 解析 bbcode 中的多个列表?

c - 通过 20-30 GB 的多个日志文件搜索模式的最快方法是什么

testing - 我们可以在拉丁语言中使用什么样的分割规则来编写测试用例?

Java语法困惑,调用变量方法?

java - 帮助摆脱重复的代码?