Wyrażenie regularne Pythona pasujące do początku łańcucha lub białych znaków

Mam następujący ciąg

'abc[123]defgh ijk[456]lm no[78] pq'

Chciałbym wyodrębnić wszystkie części, które są albo między początkiem ciągu, a[ lub między białymi znakami i[. Dla danego ciągu są to części'abc', 'ijk', i'no'.

Mam następujące wyrażenie

exp = re.compile(r'\s(.*?)\[')

Ale nie wiem, jak dodać początek łańcucha jako opcjonalne wyrażenie. Jak muszę napisać wyrażenie, aby objąć oba przypadki?

questionAnswers(2)

yourAnswerToTheQuestion