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

使用Python Regex提取字符串中姓名返回空列表该如何解决

正则提取姓名问题修复方案

原代码返回空列表的原因

你使用的正则末尾包含正向预查规则(?=\s\(),该规则要求匹配内容的后方必须跟随「空格+左括号」字符,但你提供的测试字符串中不存在左括号,因此始终无法命中匹配结果,返回空列表。

修复后的实现代码

import re

string = """Amy is 5 years old, and her sister Mary is 2 years old. 
Ruth and Peter, their parents, have 3 kids."""

# 基础人名匹配规则:匹配首字母大写、后续为小写字母的独立单词
res = re.findall(r'\b[A-Z][a-z]+\b', string)

print(res)

运行输出结果:

['Amy', 'Mary', 'Ruth', 'Peter']

扩展适配规则

如果需要匹配包含中间名、缩写点的人名(如J.K. Rowling、Mary Ann),可以调整正则为:

res = re.findall(r'\b[A-Z][a-z]*(?:\.[A-Z][a-z]*|\s[A-Z][a-z]*)*\b', string)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 00:36:03