正则表达式模式基于数字字符拆分字符串

时间:2013-05-22 13:14:52

标签: python regex string alphanumeric

我想要一个正则表达式模式,根据它们中的数字分割字符串

50cushions => [50,cushions]
30peoplerescued20children => [30,peoplerescued,20,children]
moon25flightin2days => [moon,25,flightin,2,days]

是否可以将此作为正则表达式,或者最好的方法是什么?

1 个答案:

答案 0 :(得分:4)

>>> re.findall(r'\d+|\D+', '50cushions')
['50', 'cushions']
>>> re.findall(r'\d+|\D+', '30peoplerescued20children')
['30', 'peoplerescued', '20', 'children']
>>> re.findall(r'\d+|\D+', 'moon25flightin2days')
['moon', '25', 'flightin', '2', 'days']

其中\d+匹配一个或多个数字,\D+匹配一个或多个非数字。 \d+|\D+会找到(|)一组数字或非数字,并将结果附加到匹配列表中。

itertools

>>> from itertools import groupby
>>> [''.join(g) for k, g in groupby('moon25flightin2days', key=str.isdigit)]
['moon', '25', 'flightin', '2', 'days']