import re
l = ['foo bar', 'foo bar foo:bar', 'foo bar ', 'foo bar ']
rx = re.compile(r'[^:\s]+|:|(?<=\S)(?=\s+$)')
for s in l:
if s.rstrip() != s:
s = s.rstrip() + " "
print(f"'{s}'", '=>', rx.findall(s))
aW1wb3J0IHJlCmwgPSBbJ2ZvbyBiYXInLCAnZm9vIGJhciBmb286YmFyJywgJ2ZvbyBiYXIgJywgJ2ZvbyAgICAgYmFyICAgICAnXQpyeCA9IHJlLmNvbXBpbGUocidbXjpcc10rfDp8KD88PVxTKSg/PVxzKyQpJykKZm9yIHMgaW4gbDoKCWlmIHMucnN0cmlwKCkgIT0gczoKCQlzID0gcy5yc3RyaXAoKSArICIgIgoJcHJpbnQoZiIne3N9JyIsICc9PicsIHJ4LmZpbmRhbGwocykp
'foo bar' => ['foo', 'bar']
'foo bar foo:bar' => ['foo', 'bar', 'foo', ':', 'bar']
'foo bar ' => ['foo', 'bar', '']
'foo bar ' => ['foo', 'bar', '']