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,你太棒了!非常感谢你!!根据我从你那里学到的,我想他能够编辑它来处理我遇到的更多的极端情况:酷的东西。