如何调整正则表达式,使其识别三个点与省略号作为句末标记?
调整正则以支持省略号作为句尾
修改后的完整代码
$text = preg_replace_callback('/(\d+\.\d+|\b[A-Z](?:\.[A-Z])*\b\.?)|(\.{3}|…|[.,;:!?)])\s*/', function ($matches) { return $matches[1] ? $matches[1] : $matches[2] . ' '; }, $text);
关键修改点
- 在第二个捕获组中新增两种省略号匹配规则:
\.{3}:匹配连续三个英文点(...),对.转义是因为正则中.是通配符,必须转义才能匹配字面意义的点…:直接匹配Unicode标准省略号字符(确保PHP文件编码为UTF-8)
逻辑说明
原正则核心逻辑不变:
- 优先匹配数字小数(如
3.14)或大写字母缩写(如N.B.C.),这类内容直接保留原样 - 匹配句尾标点时,现在会包含
...和…,替换时同样在标点后添加空格,实现句尾识别
内容的提问来源于stack exchange,提问作者Henrik Petterson
相关产品推荐
相关产品推荐

