我不能用我拥有的正则表达式得到我想要的东西,例如一个字符串2000H2HfH我需要得到['2000','H','2','Hf','H']。所以,我需要按数字和大写字母或大写字符串拆分我使用它([A-Z][a-z]?)(\d+)?并丢失了凝视数字,这是可以理解的原因,但我无法取回它以使结果可读?
2 回答
达令说
TA贡献1821条经验 获得超6个赞
你可以使用
re.findall(r'\d+|[A-Z][a-z]*', text)
细节:
\d+
- 1+ 位数|
- 或者[A-Z][a-z]*
- 一个大写字母,然后是零个或多个小写字母。
import re
text = "2000H2HfH"
print( re.findall(r'\d+|[A-Z][a-z]*', text) )
# => ['2000', 'H', '2', 'Hf', 'H']
四季花海
TA贡献1811条经验 获得超5个赞
你有两个一个接一个的捕获组,所以你一个接一个地捕获它们。为了实现你的目标,你应该像这样修改你的捕获
([A-Z][a-z]?|\d+)?
这里的 | 符号表示您捕获大写字母后跟小写字母或数字。
添加回答
举报
0/150
提交
取消