@chrysn yeah, no, not even my hack fixed it. The truth is, it was something like `(?:(moo)(foo)(bar)(quux)|()(foo)()())`, but when calling `match().groups()` I would either get:
`['moo', 'foo', 'bar', 'quux', None, None, None, None]` or
`[None, None, None, None, '', 'foo', '', '']`
instead of
`['moo', 'foo', 'bar', 'quux']` or
`['', 'foo', '', '']`
as I expected. The resulting code was even worse :)