使用正则表达式从文本内容创建句子数组
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 函数中使用的正则表达式没有考虑 Mrs. Miss. Ms. 的实例。
如何将排除项添加到正则表达式以避免这些情况?
谢谢。
我找到的创建连贯句子数组的最佳答案是在上面评论中@Marc 建议的 link 中找到的正则表达式解决方案。
这个正则表达式的最大优点是您可以向其中添加内容。例如,我添加了月份的缩写,例如 SEPT。通常后跟句号。
我正在寻求帮助,以使此代码更准确。 对于任何给定的文本 ($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 函数中使用的正则表达式没有考虑 Mrs. Miss. Ms. 的实例。 如何将排除项添加到正则表达式以避免这些情况?
谢谢。
我找到的创建连贯句子数组的最佳答案是在上面评论中@Marc 建议的 link 中找到的正则表达式解决方案。
这个正则表达式的最大优点是您可以向其中添加内容。例如,我添加了月份的缩写,例如 SEPT。通常后跟句号。