fork download
  1. import re
  2. l = ['foo bar', 'foo bar foo:bar', 'foo bar ', 'foo bar ']
  3. rx = re.compile(r'[^:\s]+|:|(?<=\S)(?=\s+$)')
  4. for s in l:
  5. if s.rstrip() != s:
  6. s = s.rstrip() + " "
  7. print(f"'{s}'", '=>', rx.findall(s))
Success #stdin #stdout 0.02s 9476KB
stdin
Standard input is empty
stdout
'foo bar' => ['foo', 'bar']
'foo bar foo:bar' => ['foo', 'bar', 'foo', ':', 'bar']
'foo bar ' => ['foo', 'bar', '']
'foo     bar ' => ['foo', 'bar', '']