如何用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
相关产品推荐
相关产品推荐

