我怎样才能把一篇课文分成一组句子?
示例文本:
给我煎海狸。给我炸河狸!给我炸海狸?
给我炸4号海狸?!给我炸很多海狸…终点
应输出:
0 => Fry me a Beaver.
1 => Fry me a Beaver!
2 => Fry me a Beaver?
3 => Fry me Beaver no. 4?!
4 => Fry me many Beavers...
5 => End
我尝试了一些我通过搜索找到的解决方案,但都失败了,尤其是在第四句。
/(?<=[!?.])./
/\.|\?|!/
/((?<=[a-z0-9)][.?!])|(?<=[a-z0-9][.?!]\"))(\s|\r\n)(?=\"?[A-Z])/
/(?<=[.!?]|[.!?][\'"])\s+/ // <- closest one
最佳答案
既然你想“分裂”句子,你为什么要匹配它们?
在这种情况下,我们使用preg_split()。
代码:
$str = 'Fry me a Beaver. Fry me a Beaver! Fry me a Beaver? Fry me Beaver no. 4?! Fry me many Beavers... End';
$sentences = preg_split('/(?<=[.?!])\s+(?=[a-z])/i', $str);
print_r($sentences);
输出:
Array
(
[0] => Fry me a Beaver.
[1] => Fry me a Beaver!
[2] => Fry me a Beaver?
[3] => Fry me Beaver no. 4?!
[4] => Fry me many Beavers...
[5] => End
)
说明:
简单地说,我们是按分组空间进行拆分,并执行两项操作:
??=[a-z])积极的前瞻性断言,搜索空格后是否有字母,这是解决
no. 4
问题的一种方法。