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

Python正则查找字符串所有13位数字仅返回首个结果的解决方法

Python正则提取13位数字仅返回首个结果的排查修复

问题原因

  • 所用正则^(?:.*?(\d{10,13}).*|.*)$携带行首^、行尾$锚点,逻辑为整行单次匹配,仅能捕获到整段文本里第一个符合长度规则的数字,无法遍历提取所有匹配项。
  • 正则规则写为\d{10,13},会误捕获长度为10-12位的数字串,不符合提取纯13位数字的需求。
  • 正则中包裹的.*通配符会吞掉其余符合规则的数字段,导致后续匹配项无法被捕获。

修复方法

替换原有re.findall行的正则规则,移除整行锚点和冗余通配符,直接全局扫描匹配13位连续数字即可:

# 精准匹配所有独立的13位数字串
my_pattern_list = re.findall(r"\b\d{13}\b", my_pattern)

规则说明:

  • \b为单词边界,避免从长度超过13位的连续数字中截断出13位片段造成误匹配
  • \d{13}严格匹配连续13个数字
  • re.findall会扫描整个目标字符串,返回所有符合规则的匹配结果列表

效果验证

使用提供的样本文本运行修复后的代码,返回结果如下,已覆盖全部13位数字:

['9311105005816', '4711414284189', '9312566048022', '9312324001115', '8711167004368']

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 11:06:18