为了账号安全,请及时绑定邮箱和手机立即绑定

Python 正则表达式按数字和大写字母拆分

Python 正则表达式按数字和大写字母拆分

慕哥9229398 2023-04-18 11:06:07
我不能用我拥有的正则表达式得到我想要的东西,例如一个字符串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']


查看完整回答
反对 回复 2023-04-18
?
四季花海

TA贡献1811条经验 获得超5个赞

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

([A-Z][a-z]?|\d+)?

这里的 | 符号表示您捕获大写字母后跟小写字母或数字。


查看完整回答
反对 回复 2023-04-18
  • 2 回答
  • 0 关注
  • 119 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信