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

修正rearrange_name函数正则表达式,适配中间名、双姓氏等格式

修复rearrange_name函数的正则表达式问题

原代码的正则表达式^(\w*), (\w*)$存在两个核心问题:

  1. \w仅匹配字母、数字和下划线,无法识别名字里的点号(比如F.)、姓氏里的空格/连字符(比如双姓氏)
  2. *允许匹配空字符,且只能捕获单一连续的字符块,没法处理包含中间名的多部分名字

下面是修复后的代码:

import re
def rearrange_name(name):
    # 匹配带特殊字符的姓氏(空格、连字符、单引号)和带点/空格的名字部分
    result = re.search(r"^([\w\s'-]+), ([\w\s'.]+)$", name)
    if result is None:
        return name
    return "{} {}".format(result[2], result[1])

# 测试示例
name = rearrange_name("Kennedy, John F.")
print(name)  # 输出: John F. Kennedy

# 额外测试场景
print(rearrange_name("de la Cruz, Maria"))  # 输出: Maria de la Cruz
print(rearrange_name("Smith-Jones, Robert"))  # 输出: Robert Smith-Jones
print(rearrange_name("O'Neil, Anne M"))  # 输出: Anne M O'Neil

正则修改说明

  • 第一个捕获组([\w\s'-]+):允许姓氏包含空格、连字符、单引号,覆盖双姓氏、带前缀的姓氏等场景
  • 第二个捕获组([\w\s'.]+):允许名字包含空格、点号、单引号,覆盖中间名、带点的首字母等场景
  • 使用+代替*:确保捕获的内容至少有一个字符,避免无效的空匹配

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 06:06:06