return [string[start:end] for start, end in zip(starts, ends)]
print(zerowidthsplit('(?<!foo)(?=bar)', 'foobarbarbazbar'))
Регулярное выражение Python: разделение на соответствие шаблону, которое является пустой строкой