Regex Python para corresponder ao início da string ou espaço em branco

Eu tenho a seguinte string

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

E eu gostaria de extrair todas as partes que estão entre o início da string e[ ou entre espaço em branco e[. Para a sequência especificada, essas são as partes'abc', 'ijk'e'no'.

Eu tenho a seguinte expressão

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

Mas não consigo descobrir como adicionar o início da string como uma expressão opcional. Como preciso escrever a expressão para cobrir os dois casos?

questionAnswers(2)

yourAnswerToTheQuestion