正则表达式替换匹配点后的接下来的两个单词

问题描述 投票:0回答:1

我正在编写一个正则表达式来替换匹配点之后接下来两个单词的最大值。

预期前缀:dr、doctor、pr、professor

示例文字:

检查是在博士同意并在场的情况下进行的 John Doe(节奏学家)。

预期结果:

检查是在博士同意并在场的情况下进行的 [DOCTOR_NAME](节奏学家)。

这是我当前的正则表达式:

(\s|^|^(.*)|\()(dr|doctor|pr|professor)(\s|[.])(\s*([A-Z]\w+)){0,2}

但是,它不考虑结束括号,如下图所示: enter image description here

非常感谢您对改进正则表达式的帮助。谢谢!

python python-3.x regex
1个回答
0
投票

你似乎让事情变得更加复杂了。 您想要匹配医生/专业头衔,可以是完整单词或缩写,后跟 1 或 2 个单词的名称。 然后使用这个模式:

\b(dr|doctor|pr|professor)\b[.]?\s+(\w+(?: \w+)?)

并替换为:

$1 [$2]

演示

图案说明:

  • \b(dr|doctor|pr|professor)\b
    比赛标题
  • [.]?
    可选点
  • \s+
    一个或多个空白字符
  • (\w+(?: \w+)?)
    然后匹配并捕获
    $1
    一两个单词名称
© www.soinside.com 2019 - 2024. All rights reserved.