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

如何用Python正则拆分字符串'AB4F2D'为['A','B4','F2','D']?

解决方案

你需要的正则表达式要优先匹配字母+数字的组合,再匹配单独的字母,这样就能避免数字遗漏或字母被错误组合。

正确的实现代码如下:

import re

def get_elements(input_string):
    pattern = r'[A-Z]\d|[A-Z]'
    elements = re.findall(pattern, input_string)
    return elements

# 测试验证
print(get_elements('AB4F2D'))  # 输出: ['A', 'B4', 'F2', 'D']

为什么之前的正则未生效?

  • 第一个模式r'[A-Z][A-Z0-9]':仅匹配双字符组合,漏掉单独的A和D,还错误组合了AB。
  • 第二个模式r'[A-Z][A-Z0-9]|[A-Z]':正则按顺序匹配,先匹配了AB(符合双字符规则),导致B无法和后续的4组合。
  • 第三个模式r'\D|\D\d':\D会单独匹配每个字母,直接忽略了数字。
  • 第四个模式r'[A-Z]|[A-Z][0-9]':匹配顺序错误,先匹配单独字母,导致B、F被单独提取,后续数字无法与之组合。
  • 第五个模式r'[A-Z]{1}|[A-Z0-9]{1,2}':[A-Z0-9]{1,2}会匹配任意1-2个字母数字,出现4F、2D这类错误组合。

内容的提问来源于stack exchange,提问作者Marco Di Gennaro

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 14:20:32