请教一个正则表达式问题

请教一个正则表达式问题

re.search(r'(\d{0,2})(\d{3,3})*(\.)?(\d*)','12456677.346').groups(),结果
('12', '677', '.', '346'),为什么不能匹配456呢?
我想是因为那个*造成的。比如你改为:

re.search(r'(\d{0,2})(\d{3,3})(\d{3,3})(\.)?(\d*)','12456677.346').groups()

就没有问题,而使用*,则只有最后一个才放到groups()中去了,因为匹配上是两个,但对应的模式只有一个,而且re没有处理为list,也就是:

('12', ['456', '677'], '.', '346')

所以只有最后一个留下来了。我是这么猜的。
要是我的字符串再长点你那个怎么匹配?
不知道你的需求是什么,我还不一定使用正则表达式呢。