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

使用re.split()拆分字符串出现尾部空字符串的正则优化方案咨询

拆分字符串分离数字序列避免生成尾部空串的解决方案

你不需要调整re.split()所用的正则,直接换用re.findall()方法就能一步得到无空串的拆分结果,使用正则r'\d+|\D+'即可:

import re
s = 'abc123abc'
print(re.findall(r'\d+|\D+', s))
s = 'abc123abc123'
print(re.findall(r'\d+|\D+', s))

运行输出结果为:

['abc', '123', 'abc']
['abc', '123', 'abc', '123']

原理解释

该正则会交替匹配连续的数字序列、连续的非数字序列,自动覆盖整个字符串的所有内容,不会生成多余的空串,也不需要额外做过滤操作。
如果确实需要坚持使用re.split()实现,无法通过优化正则完全避免边界空串的生成,这是re.split()本身的运行逻辑决定的:只要分隔符出现在字符串的头部或尾部,就会对应生成开头/结尾的空串。这种场景下可以直接加简单的列表推导过滤空值即可:

res = [i for i in re.split('(\d+)', s) if i]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 01:36:05