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

正则表达式优化:实现排除特定称谓的正确句子拆分

段落拆分句子的正则表达式修复

你当前的正则核心问题出在开头的字符组[^Mr|^mr|^Mrs|^mrs|^Ms|^ms]——字符组仅会匹配单个字符,它实际的含义是匹配不是M、r、|、^这些单个字符的任意字符,完全偏离了你“排除Mr/mr/Mrs/mrs/Ms/ms这些完整单词”的需求,这就导致当句子末尾字符是m/r/s时,这个字符组匹配失败,整个正则失效,拆分出错。

修正后的实现方案

要实现“排除头衔+标点”的逻辑,应该用负向后行断言((?<!...)),它能检查当前位置之前的内容是否不是指定的完整字符串,正好满足你排除特定单词的需求。

修改后的代码

text.replaceAll(/(?<!Mr|mr|Mrs|mrs|Ms|ms)(\.|\?|\!)\s[A-Z]/g, r => r.replace(/\s/, "{break}")).split("{break}");

逻辑说明

  • (?<!Mr|mr|Mrs|mrs|Ms|ms):确保句子结束标点(.?!)的前面不是这些头衔单词
  • (\.|\?|\!):匹配句子结尾的标点符号
  • \s[A-Z]:匹配标点后的空格+大写字母(新句子的开头特征)

测试验证

  • 原失效示例字符串:"A string with words. A new string."
    修正后拆分结果:["A string with words.", "A new string."]
  • 原正常示例字符串:"A string. A new string."
    修正后拆分结果:["A string.", "A new string."]
  • 头衔场景(如"Mr. Smith is here. Mrs. Jones left."):
    拆分结果:["Mr. Smith is here.", "Mrs. Jones left."],不会错误拆分头衔后的标点

内容的提问来源于stack exchange,提问作者Mason Wright

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 19:35:21