The solution can apparently be this:
$string = 'TodayILiveInTheUSAWithSimon';
$regex = '/(?<!^)((?<![[:upper:]])[[:upper:]]|[[:upper:]](?![[:upper:]]))/';
$string = preg_replace( $regex, ' $1', $string );
But this case "TodayILiveInTheUSAWithSimonUSA" does not work well because it returns "Today I Live In The USA With Simon US A" the last letter appears separated. Do you know a complete solution?