首页 > 解决方案 > Java 正则表达式检测句子结尾但忽略(num)(句点),例如 15

问题描述

试图在java中找到一个好的正则表达式来检测句子结束。主要问题是如果有一个数字然后是句号,它会将其检测为句子结尾(参见演示链接)。但就我而言,我更希望它不将其识别为句子结尾,即使在某些情况下可能是这样。我在文档中更常见的是部分标题,如下所示:

  12.  the end of the world   13. world didnt end  14. nope it did

就我而言,它将许多简单的标题列表拆分为我不想要的句子。

此处发布的解决方案的附加问题:

建议的解决方案是: [!?.]+(?=$|\s)

See demo:  http://regex101.com/r/lS5tT3/15

问题是如果有一个章节标题,如15. 那么它会错误地将其视为句子结尾。在演示中尝试此文本,您将在第一句话中看到问题:

   This is the f!!rst *15.* the best sentence! Is this the second one? The third 32.5 sentence is here... And the fourth one!!

如果有任何正则表达式高手可以帮助在逻辑上添加,如果句号空间不是句子结尾,而是前面有一个非常有帮助的数字

标签: javaregexsentence

解决方案


此正则表达式与一些缩写一起使用并正确识别句子结束标记。不幸的是,对于 java string.split 我需要这个函数的反函数......

 ([!?]+(?=$|\s))|((?<![\d])(?<!etc)(?<!Mr)(?<!mr)(?<!i.e)(?<!Dr)(?<!dr)(?<!Mrs)(?<!mrs)(?<![ A-Z])(?<!Ms)(?<!ms)(?<!Phd)(?<!u\.s)(?<!U\.S)(?<!\.)[.]{1}(?=$|\s))|

推荐阅读