求字符串分隔方法

求字符串分隔方法

字符串格式如下:
TDT+20+0713+1++MAEU:172:166+++DPMT:103::E.R. AMSTERDAME
我想得到这样的结果:
['TDT', '20', '0713', '1', '', 'MAEU:172:166', '', '', 'DPMT']
这个结果可以用.split('+')得到,但是我想用正则得到,请问该怎么写正则表达式

以下是我的正则表达式
>>> p = re.compile('\w+')
>>> p.findall('TDT+20+0713+1++MAEU:172:166+++DPMT')
['TDT', '20', '0713', '1', 'MAEU', '172', '166', 'DPMT']
>>>

丢了166+++DPMT 这之间的空数据,还有将MAEU:172:166折开了,
请指教,谢谢
>>> s = 'TDT+20+0713+1++MAEU:172:166+++DPMT'
>>> s.split('+')
['TDT', '20', '0713', '1', '', 'MAEU:172:166', '', '', 'DPMT']
>>> import re
>>> pat = re.compile('\+')
>>> pat.findall(s)
['+', '+', '+', '+', '+', '+', '+', '+']
>>> pat.split(s)
['TDT', '20', '0713', '1', '', 'MAEU:172:166', '', '', 'DPMT']
>>>

r'[^+]+' findall() 试试
木头是说非贪婪吧
那个不是非贪婪,[^+]+表示非+号的字符重复1次到多次。非贪婪是使用?
欧 我错好远
非贪婪是perl里才有的概念
python 没有
*?, +?, ??
The "*", "+", and "?" qualifiers are all greedy; they match as much text as possible. Sometimes this behaviour isn't desired; if the RE <.*> is matched against '<H1>title</H1>', it will match the entire string, and not just '<H1>'. Adding "?" after the qualifier makes it perform the match in non-greedy or minimal fashion; as few characters as possible will be matched. Using .*? in the previous expression will match only '<H1>'.
非贪婪不是perl的专利,它只是正则式的一个基本用法,python完全支持。