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

在Google Sheets中使用正则表达式去除姓名头衔提取名字

如何从姓名数据中提取头衔和名(Forename)

你已经走在了正确的方向上!我来帮你完善正则逻辑和具体实现步骤,不管是用Google Sheets(结合你提到的表格场景)还是代码处理都能轻松搞定:

第一步:优化头衔提取的正则表达式

你写的^(Miss|Mr|Lady|Mrs|Ms|Dr|Mr.|Sir)\b有个小细节需要调整:正则里的.是匹配任意字符的特殊符号,所以Mr.会错误匹配Mr加任意一个字符,而不是严格的Mr.。需要把带点的头衔里的点转义,调整后的正则是:

^(Miss|Mr|Lady|Mrs|Ms|Dr|Mr\.|Sir|Mrs\.)\b
  • ^ 确保从字符串开头匹配,避免中间出现的类似头衔干扰结果
  • (...) 作为捕获组,精准提取我们需要的头衔内容
  • \b 匹配单词边界,防止把Mrxyz这种错误识别成头衔

在Google Sheets中提取头衔

用REGEXEXTRACT函数配合上面的正则,再用IFERROR处理没有头衔的情况:

=IFERROR(REGEXEXTRACT(A2, "^(Miss|Mr|Lady|Mrs|Ms|Dr|Mr\.|Sir|Mrs\.)\b"), "无头衔")

把A2替换成你存放姓名的单元格即可。

第二步:提取名(Forename)

提取名需要分两种情况:有头衔的姓名要先去掉头衔再取第一个单词;没有头衔的直接取第一个单词。我们可以用REGEXREPLACE先移除头衔部分,再提取第一个单词:

Google Sheets公式实现

=IFERROR(REGEXEXTRACT(REGEXREPLACE(A2, "^(Miss|Mr|Lady|Mrs|Ms|Dr|Mr\.|Sir|Mrs\.)\s+", ""), "^(\w+)"), REGEXEXTRACT(A2, "^(\w+)"))
  • REGEXREPLACE(A2, "...", ""):如果开头有头衔,就把头衔和后面的空格一起替换为空
  • REGEXEXTRACT(..., "^(\w+)"):提取处理后字符串的第一个单词(也就是名)
  • IFERROR兜底:如果没有头衔,直接提取原字符串的第一个单词

示例效果

姓名提取的头衔提取的名
Mr John DoeMrJohn
Mrs. Jane SmithMrs.Jane
Alice Brown无头衔Alice
Dr. Michael WilsonDr.Michael

拓展:通用代码实现(以Python为例)

如果用代码批量处理,思路完全一致:

import re

title_pattern = re.compile(r'^(Miss|Mr|Lady|Mrs|Ms|Dr|Mr\.|Sir|Mrs\.)\b')
forename_pattern = re.compile(r'^(\w+)')

def extract_title_and_forename(name):
    title_match = title_pattern.match(name)
    title = title_match.group() if title_match else "无头衔"
    
    # 移除头衔部分(如果存在)
    cleaned_name = title_pattern.sub('', name).strip() if title_match else name
    
    forename = forename_pattern.match(cleaned_name).group()
    return title, forename

# 测试示例
print(extract_title_and_forename("Mr John Doe"))  # ('Mr', 'John')
print(extract_title_and_forename("Alice Brown"))  # ('无头衔', 'Alice')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 19:07:38