使用正则表达式从文本内容中创建句子数组


Using Regular Expression to create arrays of sentences from text content

我正在寻求帮助,使此代码更加准确。对于任何给定的文本($my_block_of_text),下面的脚本将根据句号、感叹号和类似的句末标点符号的出现位置将内容分解为句子。

   $parts = preg_split('/([.?!:']])/', $my_block_of_text, -1, PREG_SPLIT_DELIM_CAPTURE);
   $sentences = array();
   for ($i=0, $n=count($parts)-1; $i<$n; $i+=2) {
    $sentences[] = $parts[$i].$parts[$i+1];
   }
   if ($parts[$n] != '') {
    $sentences[] = $parts[$n];
   }

然而,这段代码的问题在于,preg_split函数中使用的正则表达式没有考虑Mr.Miss.Miss的实例。如何将排除添加到正则表达式中以避免这些实例?

谢谢。

我找到的创建连贯句子数组的最佳答案是在@Marc在上面评论中建议的链接中找到的regex解决方案。

这个正则表达式最好的地方是你可以添加到它中。例如,我添加了几个月的缩写,比如SEPT,它们通常后面跟着句号。

https://stackoverflow.com/a/7438782/3662086