我需要一个能从文本文件中提取句子的正则表达式。 示例文本:
例如,考虑2004年底发生的亚洲海啸灾难。对Google新闻(http://news.google.com)的查询返回了超过80,000条关于此事件的在线新闻文章一个月(2005年1月17日至2月17日)。先生的信息。 Kahana。
这是我的代码:
$re = '/(?<=[.!?]|[.!?][\'"])\s+/';
$sentences = preg_split($re, $text, -1, PREG_SPLIT_NO_EMPTY);
但最后一句仍然分为information by mr.
和Kahana.
怎么解决?谢谢你:))
答案 0 :(得分:7)
使用正则表达式无法执行此操作
英语作为一种语言不适合放在合适的格式规则中。因此,正则表达式不适合您实现的目的。你真正想要的是像自然语言处理器。
除非这对您的计划至关重要,否则我建议您确定以下事项:
我的建议是使用反复试验来尽可能降低错误率。在大量文本上运行程序,并继续添加异常,直到获得可接受的错误率。但是,如果你需要超过几十个规则,你可能只想重新考虑这个问题。
简而言之,PHP和正则表达式并不适用于此,因为英语很时髦。因此,要么添加例外以获得较小的错误率,要么完全重新考虑这一点。