You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JS正则拆分句子时U.S.等缩写的点被误判为句末分隔符如何解决?

正则调整方案

你遇到的问题核心是原有正则没有区分缩写用的点和句末点,我们可以通过负向后行断言过滤掉缩写场景的点,调整后的代码如下:

const substrings = transcript.split(/(?<![A-Z])[.!]+(?!\d)\s*|\n+\s*/);

规则说明

  • 新增的(?<![A-Z])为负向后行断言,限定只有当. / !前面不是大写英文字母时,才会被判定为句末分隔符,完美适配U.S.这类大写字母+点组成的缩写场景,不会误拆分。
  • 如果需要覆盖mr.、dr.这类小写缩写场景,可以将断言修改为(?<![a-zA-Z]),即可同时过滤大小写字母结尾的缩写点。

调整后运行你的测试文本,输出的结果就是完整的单句,不会在U.S.位置被错误拆分,也不会修改原始句子的内容,符合需求。

如果需要兼容不支持负向后行断言的旧JS环境,可以改用匹配所有句子的正向正则写法,通过match方法提取句子,示例如下:

const substrings = transcript.match(/(?:[A-Z][^.!]|[A-Z]\.[A-Z]\.)*[.!]?\s*(?=\n|$|[A-Z])/g).filter(Boolean);

内容的提问来源于stack exchange,提问作者Sheharyar Abbasi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 01:36:04