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

正则表达式匹配求助:从"10K-50K"提取数字返回Nonetype

解决正则匹配"10K-50K"提取数字的问题

嘿,我来帮你搞定这个小问题~你遇到的NoneType结果,核心原因是你的正则表达式里的[\d]只能匹配单个数字,但目标字符串里的10和50都是两位数字,所以自然匹配不上啦。

修正后的正则表达式

我们只需要把匹配数字的部分改成\d+(+表示匹配前面的元素至少一次,也就是可以匹配1位或多位数字),就能正确捕获目标数字了。这里有两种常用的写法:

针对固定"K"的场景

如果你的字符串后缀固定是K,可以写得更精准:

import re
data = "10K-50K"
data1 = re.match(r'(\d+)K-(\d+)K', data)
if data1:
    print(data1.group(1))  # 输出:10
    print(data1.group(2))  # 输出:50

通用字母后缀的场景

如果后缀可能是其他大写字母(比如M、G),可以把K换成[A-Z]:

import re
data = "10K-50K"
data1 = re.match(r'(\d+)[A-Z]-(\d+)[A-Z]', data)
if data1:
    print(data1.group(1))  # 输出:10
    print(data1.group(2))  # 输出:50

关键知识点解释

  • \d+:匹配一个或多个阿拉伯数字,完美覆盖1位、两位甚至更多位数的数字场景
  • ():正则中的捕获分组,把我们需要提取的数字包裹起来,之后通过group(n)就能获取第n个分组的内容
  • re.match:它会从字符串的开头开始匹配,你的目标字符串正好符合开头就匹配的格式,所以完全适用;如果需要在更长的文本中查找这种格式,改用re.search会更合适哦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:50:24