Php 把课文分成句子

Php 把课文分成句子,php,regex,string,preg-split,Php,Regex,String,Preg Split,如何将文本拆分为一系列句子 示例文本: 给我煎一只海狸。给我煎一只海狸!给我煎一只海狸? 炸我四号海狸?!给我炸很多海狸。。。结束 应输出: 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 我尝试了一些通过搜索找到的解决方案,但都失败了,尤其是在第四

如何将文本拆分为一系列句子

示例文本:

给我煎一只海狸。给我煎一只海狸!给我煎一只海狸? 炸我四号海狸?!给我炸很多海狸。。。结束

应输出:

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
/(?既然你想“拆分”句子,为什么要尝试匹配它们

对于这种情况,让我们使用

代码:

$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
)
说明:

$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
)
简单地说,我们按分组空间进行拆分,并做两件事:


  • (?句子#4不符合标准语法。你需要一类
    终止符
    ——标记句子结尾的标记。如果你使用其中一个终止符作为常规符号,那么它要么不是终止符,要么你的句子格式不正确。简言之,你不能既吃蛋糕又吃蛋糕。我做蛋糕,然后吃蛋糕l时间:P可以像2个字符一样向前看,如果第二个字符不是大写字母A,这意味着前面的标点不是有效的,听起来好像你已经知道需要做什么了。但是我怎么把它放进正则表达式呢?内容
    Theolcat先生
    no.1
    只是一个问题:
    \s
    不应该是
    \s+
    ?我的意思是忽略多个组合在一起的空格谢谢!把它添加到我的助手库-@Ryan quick。看看它是否适合你的需要。@HamZa Holy smokes,你太棒了!非常感谢你!!根据我从你那里学到的,我想他能够编辑它来处理我遇到的更多的极端情况:酷的东西。