от http://docs.python.org/library/re.html#re.split
>>> re.split('(\W+)', 'Words, words, words.')
['Words', ', ', 'words', ', ', 'words', '.', '']
так что ваш пример будет
>>> re.split(r'(^a\s*)', "a foobar")
['', 'a ', 'foobar']
В этот момент вы можете отделить нечетные элементы (ваше совпадение) от четных (остальные).
>>> l = re.split(r'(^a\s*)', "a foobar")
>>> l[1::2] # matching strings
['a ']
>>> l[::2] # non-matching strings
['', 'foobar']
Это имеет преимущество перед re.sub в том, что вы можете сказать, когда, где и сколько совпадений было найдено.