Python正则表达式在数字和大写字母上进行拆分

Python正则表达式在数字和大写字母上进行拆分,python,regex,Python,Regex,我不能用正则表达式得到我想要的 例如,我有一个字符串 2000H2HfH 我需要得到['2000','H','2','Hf','H'] 所以,我需要按数字和大写字母或字符串后面的大写字母进行拆分 我使用这个[A-Z][A-Z]?\d+?并丢失起始编号,这是可以理解的,但我无法将其取回以使结果可读?您可以使用 re.findall(r'\d+|[A-Z][a-z]*', text) 见a。详情: \d+-1+位 |-或 [A-Z][A-Z]*-一个大写字母,然后是零个或多个小写字母。 见a:

我不能用正则表达式得到我想要的 例如,我有一个字符串

2000H2HfH
我需要得到['2000','H','2','Hf','H']

所以,我需要按数字和大写字母或字符串后面的大写字母进行拆分

我使用这个[A-Z][A-Z]?\d+?并丢失起始编号,这是可以理解的,但我无法将其取回以使结果可读?

您可以使用

re.findall(r'\d+|[A-Z][a-z]*', text)
见a。详情:

\d+-1+位 |-或 [A-Z][A-Z]*-一个大写字母,然后是零个或多个小写字母。 见a:


您有两个捕获组,一个接一个,因此您可以一个接一个地捕获它们。为了实现您的目标,您应该像这样修改捕获

([A-Z][a-z]?|\d+)?
这里的|符号表示捕获大写字母后接小写字母或数字


编写和测试正则表达式的服务也很不错,但Wiktor的正则表达式返回的是干净的列表,不带尾随“”
([A-Z][a-z]?|\d+)?