When you repeat a capturing group, each new repetition will overwrite the previous one. This is normal behaviour in regular expressions in general. Only .NET allows access to each instance ("capture") of a repeated capturing group.
If you know in advance what the maximum number of possible repetitions will be, then you can simply repeat the group "manually" as often as needed.
If you don't know that, use two regexes: Let the first one match from the first to the last time range, and let the second one (applied to the first match using finditer()
) match one single range repeatedly.