文字列に存在する数字に基づいて文字列を分割する正規表現パターンが欲しい
50cushions => [50,cushions]
30peoplerescued20children => [30,peoplerescued,20,children]
moon25flightin2days => [moon,25,flightin,2,days]
これを正規表現で行うことは可能ですか、それとも最善の方法は何ですか?
文字列に存在する数字に基づいて文字列を分割する正規表現パターンが欲しい
50cushions => [50,cushions]
30peoplerescued20children => [30,peoplerescued,20,children]
moon25flightin2days => [moon,25,flightin,2,days]
これを正規表現で行うことは可能ですか、それとも最善の方法は何ですか?
>>> 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']
where は\d+
1 つ以上の数字と\D+
一致し、1 つ以上の非数字と一致します。( ) 数字のグループまたは数字以外のグループ\d+|\D+
を検索し、結果を一致のリストに追加します。|
またはitertools
>>> from itertools import groupby
>>> [''.join(g) for k, g in groupby('moon25flightin2days', key=str.isdigit)]
['moon', '25', 'flightin', '2', 'days']