我想取一个字符串并通过句号(句号)将其拆分(或将其分解)为数组。
我曾经有过:
$processed_data = explode(".", $raw_data);
但这会删除句号。
研究,我发现preg_split
,所以尝试了:
$processed_data = preg_split('\.', $raw_data, PREG_SPLIT_DELIM_CAPTURE);
同时使用\.
和\\.
但尽可能地尝试,我找不到一种方法来正确地包括全停。
有人知道这样做的正确方法吗?
预期结果是:
字符串
$raw_data = 'This is my house. This is my car. This is my dog.';
通过句号分成一个数组,例如:
array("This is my house.", "This is my car.", "This is my dog.")
答案 0 :(得分:2)
将字符串拆分为句子:
preg_match_all('~\s*\K[^.!?]*[.!?]+~', $raw_data, $matches);
$processed_data = $matches[0];
注意:如果你想处理像缩写这样的边缘情况,一个简单的正则表达式是不够的,你需要使用nltk或任何其他nlp工具和字典。
答案 1 :(得分:0)
你能试试吗?
$string = preg_replace("/\.\s?([A-Z])/", "*****$1", $raw_data);
$array = explode("*****", $string);