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

如何用Python正则表达式拆分如'S10'的无空格字母数字组合?

用Python正则拆分字母数字混合字符串

刚好我之前也碰到过类似的需求,要把像'S10'、'S11'这种无空格的字母数字混合串拆成字母和数字分开的列表,比如把'S10'拆成['S','10'],用Python正则就能轻松搞定,给你两种实用的实现方式:

方法一:使用re.findall()(直观易理解)

这种方式直接匹配出字母部分和数字部分,代码如下:

import re

input_str = 'S10'
# 正则匹配:第一个分组匹配一个或多个字母,第二个分组匹配一个或多个数字
pattern = r'([A-Za-z]+)(\d+)'
# findall返回匹配到的分组元组,取第一个结果转成列表
result = list(re.findall(pattern, input_str)[0])
print(result)  # 输出: ['S', '10']

方法二:使用re.split()(通过位置拆分)

如果想用split来实现,可以借助零宽断言定位拆分位置,避免产生空字符串:

import re

input_str = 'S10'
# 匹配字母后面、数字前面的位置(零宽断言,不会消耗字符)
pattern = r'(?<=[A-Za-z])(?=\d)'
result = re.split(pattern, input_str)
print(result)  # 输出: ['S', '10']

简单解释下:

  • 方法一的正则通过两个捕获组分别抓取字母和数字,findall会返回符合条件的分组组合,转成列表就是你要的结果,适合确定字符串是「字母+数字」固定格式的场景。
  • 方法二用了正向后顾和前瞻断言,精准定位到字母和数字的分界处进行拆分,同样能得到干净的拆分结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 07:51:44