我想拆分一个文本
过公元年?因为无论你如何选择。简体字危及了对古代文学的研究输入!
使用这三个(或更多)中的一个?!字符作为分隔符。当然,我可以使用以下命令
$lines = preg_split('/[。,!,?]/u',$body);
但是,我不想让结果行保留它们的结束分隔符。另外,句子的结尾可能类似于so 啊。。。或什么!??!!!!
发布于 2010-08-09 15:48:44
试试这个:
$lines = preg_split('/(?<=[。!?])(?![。!?])/u',$body);它在前面有一个分隔符字符,但后面没有分隔符字符的位置拆分。它不使用分隔符,如果有两个或更多连续的分隔符,它只在最后一个分隔符之后匹配。
发布于 2010-08-09 15:17:48
在这种情况下,您需要自己编写字符串拆分器。并将连续分隔符作为一个整体保留。(您可以设置一个状态变量,指示它是在文本块中还是在分隔符块中)。
发布于 2010-08-09 15:18:04
您应该使用preg_match_all而不是preg_split,即
preg_match_all("/[^?!。]+[?!。]+/u", $text, $res);有关用法,请参阅http://www.ideone.com/rN7MB。
https://stackoverflow.com/questions/3437982
复制相似问题