One particular quirk of the (otherwise quite powerful) re module in Python is that re.split() will never split a string on a zero-length match, for
To workaround this problem, you can use the VERSION1 mode of the regex package which makes split() produce zero-length matches as well:
>>> import regex as re
>>> re.split(r"\s+|\b", "Split along words, preserve punctuation!", flags=re.V1)
['', 'Split', 'along', 'words', ',', 'preserve', 'punctuation', '!']