使用正则表达式拆分字母数字值时获取空字符串值

时间:2017-09-12 08:39:16

标签: python regex

我有一个很长的列表,其中包含如下字符串值:

AB65

我想从数字中分割字母,但是当我这样做时:

re.split('([A-Z]+)([0-9]+)', 'AB65') 

我得到以下空字符串值:

['', 'AB', '65', '']

如何获得这样的值:[' AB',' 65'] 谢谢你的帮助。

1 个答案:

答案 0 :(得分:3)

re.split用于在正则表达式匹配之间获取文本;你需要的是re.findall而不是:

>>> re.findall('([A-Z]+)([0-9]+)', 'AB65') 
[('AB', '65')]

这仍然无法正常工作,因为正则表达式匹配整个字符串'AB65'并包含两个捕获组。所以我们需要一个匹配 字母数字的正则表达式(所以用|分隔它们),并使用非捕获组(所以使用{{1 }}):

(?:…)

事实上,在这个简单的例子中,括号甚至不是必需的:

>>> re.findall('(?:[A-Z]+)|(?:[0-9]+)', 'AB65') 
['AB', '65']