Java中使用正则表达式匹配句子
我正在使用 java 中的 Scanner 类来遍历文本文件并提取每个句子。我在我的扫描仪上使用 setDelimiter 方法来处理正则表达式:
Pattern.compile("[\\w]*[\\.|?|!][\\s]")
目前这似乎有效,但它在句子末尾留下了空格。有没有一种简单的方法可以匹配末尾的空格但不将其包含在结果中?
我意识到这可能是一个简单的问题,但我以前从未使用过正则表达式,所以放轻松:)
I'm using the Scanner class in java to go through a a text file and extract each sentence. I'm using the setDelimiter method on my Scanner to the regex:
Pattern.compile("[\\w]*[\\.|?|!][\\s]")
This currently seems to work, but it leaves the whitespace at the end of the sentence. Is there an easy way to match the whitespace at the end but not include it in the result?
I realize this is probably an easy question but I've never used regex before so go easy :)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
试试这个:
这使用 lookarounds 来匹配前面的
\\s+
通过[.!?]
。如果您还想删除标点符号,则只需将其作为匹配的一部分即可:
这会将
"ORLY!?!? LOL"
拆分为"ORLY"
并“哈哈”
Try this:
This uses lookarounds to match
\\s+
preceded by[.!?]
.If you want to remove the punctuations as well, then just include it as part of the match:
This will split
"ORLY!?!? LOL"
into"ORLY"
and"LOL"
您正在寻找的是积极的前瞻性。这应该可以做到:
What you're looking for is a positive lookahead. This should do it: