我试图从PHP中包含至少5个单词的文本中提取所有句子。假设句子以句号,问题或感叹号结束,我想出了这个:
/[\w]{5,*}[\.|\?|\!]/
任何想法,出了什么问题?
此外,还需要做些什么来使用UTF-8?
答案 0 :(得分:5)
\w
仅匹配单个字符。一个单词是\w+
。如果您需要至少5个单词,您可以执行以下操作:
/(\w+\s){4,}\w+[.?!]/
即。至少4个单词后跟空格,后跟另一个单词后跟句子分隔符。
答案 1 :(得分:0)
我同意此处发布的解决方案。如果您在PHP中使用preg函数,则可以为此添加“u”模式修饰符以使用UTF-8。例如/(\w+\s){4,}\w+[.?!]/u
答案 2 :(得分:0)
没有正则表达式方法:
$str = "this is a more than five word sentence. But this is not. Neither this. NO";
$sentences = explode(".", $str);
foreach($sentences as $s)
{
$words = explode(' ', $s);
if(count(array_filter($words, 'is_notempty')) > 5)
echo "Found matching sentence : $s" . "<br/>";
}
function is_notempty($x)
{
return !empty($x);
}
输出:
找到匹配句子:这是一个超过五个单词的句子