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

Python正则提取字符串中数字及与数字紧邻的字母组合

解决方案

你之前写的正则r'[0-9]+'只会匹配连续的纯数字段,自然会把和数字绑定的字母部分筛掉。核心思路调整为:提取字符串里所有包含至少一个数字的连续非空白片段,自动过滤掉纯字母构成的词,再用空格拼接即可。

可直接运行的代码

import re

s = ['64b DRIVE RD', 'DRIVE RD 64', 'Unit 1 Drive RD 64b', '484 South Drive 84b WA', '64Drive']
res = [" ".join(re.findall(r'\S*\d\S*', item)) for item in s]
print(res)

执行后输出和预期完全一致:

['64b', '64', '1 64b', '484 84b', '64Drive']

正则逻辑解释

正则r'\S*\d\S*'的匹配逻辑刚好贴合需求:

  • \S* 匹配0到多个非空白字符,覆盖数字前后和数字直接相连的字母部分,比如64b末尾的b、64Drive里数字后的Drive段
  • \d 要求匹配片段里必须存在至少一个数字,从根源上排除了DRIVE/RD/Unit这类纯字母单词
  • 匹配时会自动按空白切分片段,不会把不同词的字符混到一起,提取完成后用空格拼接就得到最终结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 04:54:38