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

正则表达式优化需求:替换称谓后最多两个单词并适配右括号

优化正则表达式匹配头衔后的姓名并处理括号场景

你需要匹配dr、doctor、pr、professor这类头衔,将头衔后的最多两个单词替换为[DOCTOR_NAME],但原正则在姓名后紧跟右括号时无法正确终止匹配,导致结果不符合预期。

示例文本

Examination carried out in agreement with and in the presence of Dr John Doe (rhythmologist).

期望结果

Examination carried out in agreement with and in the presence of Dr [DOCTOR_NAME] (rhythmologist).

优化后的正则表达式

(\s|^|\()(dr|doctor|pr|professor)(\.?\s)([A-Z]\w+(?:\s+[A-Z]\w+)?)(?=\s*\))?

替换模板

使用反向引用替换为:$1$2$3[DOCTOR_NAME]

正则细节解释

  • (\s|^|\():匹配头衔前的合法前置位置(空格、字符串开头、左括号内),避免误匹配无关场景
  • (dr|doctor|pr|professor):精准匹配目标头衔,如需不区分大小写,可添加i修饰符(如/.../gi)
  • (\.?\s):兼容头衔带点(Dr.)和不带点(Dr)的写法,匹配头衔后的空格分隔符
  • ([A-Z]\w+(?:\s+[A-Z]\w+)?):匹配1-2个首字母大写的姓名单词,非捕获组(?:...)用于分组但不占用反向引用位
  • (?=\s*\))?:可选的正向预查,识别姓名后紧跟的空格+右括号组合,确保遇到括号时立即终止匹配,且不捕获括号本身

扩展兼容(可选)

如果需要支持姓名包含中间名缩写(如Dr John D. Doe),可以把姓名部分的正则调整为:

([A-Z]\w*(?:\.?\s+[A-Z]\w*)?)

内容的提问来源于stack exchange,提问作者Januka samaranyake

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 13:07:24