我正在编写一个正则表达式来替换匹配点之后接下来两个单词的最大值。
预期前缀:dr、doctor、pr、professor
示例文字:
检查是在博士同意并在场的情况下进行的 John Doe(节奏学家)。
预期结果:
检查是在博士同意并在场的情况下进行的 [DOCTOR_NAME](节奏学家)。
这是我当前的正则表达式:
(\s|^|^(.*)|\()(dr|doctor|pr|professor)(\s|[.])(\s*([A-Z]\w+)){0,2}
非常感谢您对改进正则表达式的帮助。谢谢!
你似乎让事情变得更加复杂了。 您想要匹配医生/专业头衔,可以是完整单词或缩写,后跟 1 或 2 个单词的名称。 然后使用这个模式:
\b(dr|doctor|pr|professor)\b[.]?\s+(\w+(?: \w+)?)
并替换为:
$1 [$2]
图案说明:
\b(dr|doctor|pr|professor)\b
比赛标题[.]?
可选点\s+
一个或多个空白字符(\w+(?: \w+)?)
然后匹配并捕获 $1
一两个单词名称