Php colocar um espaço na frente de capitais em uma string (Regex)

Eu tenho um número de seqüências que contêm palavras que são agrupadas e eu preciso separá-las.

Por exemplo ThisWasCool - Isso foi legal
MyHomeIsHere - minha casa está aqui

Im lentamente a minha cabeça em torno de expressões regulares e acredito que para fazer isso eu deveria usar preg_replace. Meu problema é reunir a expressão para encontrar a correspondência.

Eu só cheguei até aqui

   preg_replace('~^[A-Z]~', " ", $string)

Cada string contém muitas palavras, mas SOMENTE a primeira palavra contém palavras agrupadas, então usar meu exemplo acima de uma string seria
"ThisWasCool para visitá-lo novamente" - "Isso foi legal para visitá-lo novamente"

Eu disse a ele para começar no início e procurar por maiúsculas, mas o que eu não sei como fazer é restringi-lo apenas à primeira palavra de cada string - como reutilizar a letra maiúscula na parte de substituição depois do espaço.

questionAnswers(4)

yourAnswerToTheQuestion