Having trouble with regex groups
===

    >>> a = re.search('(\\d+h)?(\\d+m)?(\\d+s)?', 'in 1h15m')
    >>> a.groups()
    (None, None, None)
    >>> a = re.search('.*(\\d+h)?(\\d+m)?(\\d+s)?', 'in 1h15m')
    >>> a.groups()
    (None, None, None)
    >>> a = re.search('...(\\d+h)?(\\d+m)?(\\d+s)?', 'in 1h15m')
    >>> a.groups()
    ('1h', '15m', None)

Why is the '...' version the only one that populates 'groups'?