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

如何使用Python根据指定前三位前缀提取文本中的10位数字

Python实现提取特定前缀的10位数字

实现思路

  • 方案1:正则表达式直接匹配,适合前缀长度统一的场景,执行效率更高
  • 方案2:先提取所有10位数字再过滤,适合前缀长度不统一的场景,兼容性更强

完整代码示例

方案1:正则直接匹配(示例场景适用)

import re

a_string = "Some text 6401104219 and 6401104202 and 2201104202"
matches = ["240", "880", "898", "910", "920", "960", "209", "309", "409", "471", "640"]

# 构造正则模式:匹配以指定前缀开头、总长度10位的独立数字
pattern = r'\b(?:{})\d{{7}}\b'.format('|'.join(matches))
result = re.findall(pattern, a_string)

# 输出格式化为逗号分隔的字符串
print(', '.join(result))

代码说明:\b是单词边界,确保匹配的数字前后没有其他字母/数字;(?:{})是非捕获分组,拼接所有前缀;\d{7}匹配前缀后面的7位数字,加起来刚好10位。如果文本包含中文等非ASCII字符,可以把\b替换为(?<!\d)和(?!\d),用数字负向断言保证匹配结果的独立性。

运行输出:6401104219, 6401104202


方案2:先提取再过滤(兼容性更强)

import re

a_string = "Some text 6401104219 and 6401104202 and 2201104202"
matches = ["240", "880", "898", "910", "920", "960", "209", "309", "409", "471", "640"]

# 先提取所有10位的独立数字
all_10_digits = re.findall(r'\b\d{10}\b', a_string)
# 过滤出前缀在matches中的数字
result = [num for num in all_10_digits if any(num.startswith(prefix) for prefix in matches)]

print(', '.join(result))

代码说明:这种写法不需要关心前缀的长度,哪怕matches里的前缀存在2位、4位等不同长度的情况也能正常匹配,可扩展性更强。


内容的提问来源于stack exchange,提问作者Patrik Novotný

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 06:45:03