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

如何避免Python正则表达式re.findAll函数匹配结果出现空字符串

问题原因

你当前使用的正则规则[0-9]*中的*量词表示匹配前一个规则0次或多次,这就导致非数字字符所在的位置、字符串首尾的空位置都会被匹配到长度为0的空字符串,这就是返回结果里出现大量空值的原因。

解决方案
  • 方案1:修改正则从根源避免空匹配
    把正则中的*替换为+,+量词表示匹配前一个规则至少1次,只会匹配到长度≥1的数字串,不会产生空结果。
    修改后的测试代码:
import re
myre = r"[0-9]+"
print(re.findall(myre,"23")) # 输出 ['23']
print(re.findall(myre,"23 is a good number.")) # 输出 ['23']
  • 方案2:匹配完成后过滤空字符串
    如果不想修改原有正则,可以对返回的结果做过滤,利用空字符串为布尔假值的特性直接筛选:
import re
myre = "[0-9]*"
res = re.findall(myre,"23 is a good number.")
res = list(filter(None, res)) # 过滤所有空字符串
print(res) # 输出 ['23']

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 05:21:02