Подтвердить что ты не робот

Как добавить пробел в строку заглавными буквами, но сохранить непрерывные капиталы вместе с помощью PHP и Regex?

Я хочу добавить пробел в строку заглавными буквами, используя PHP-метод, например preg_replace() и регулярное выражение, но я хочу только добавить пробел в первую заглавную букву, когда они будут непрерывными. Я также хотел бы, чтобы регулярное выражение узнало, что последняя столица в непрерывной цепочке капиталов должна стать следующей столицей для помещения пространства раньше.

Эти строки являются примерами:

TodayILiveInTheUSAWithSimon
USAToday
IAmSOOOBored

стали:

 Today I Live In The USA With Simon
 USA Today
 I Am SOOO Bored

Можно ли это сделать и как?

Этот вопрос (Регулярное выражение, разделите строку заглавной буквой, но игнорируйте TLA), похоже, выполняет это с помощью .net.

РАБОЧЕЕ РЕШЕНИЕ

Вот полный код, который я использую:

$string = 'TodayILiveInTheUSAWithSimon';
$regex = '/(?<!^)((?<![[:upper:]])[[:upper:]]|[[:upper:]](?![[:upper:]]))/';
$string = preg_replace( $regex, ' $1', $string );

Оба эти регулярных выражения работают:

/(?<!^)((?<![[:upper:]])[[:upper:]]|[[:upper:]](?![[:upper:]]))/
/((?<=[a-z])(?=[A-Z])|(?=[A-Z][a-z]))/

Первый из приведенного ниже решения @Regexident и очень немного быстрее второго.

4b9b3361

Ответ 1

Поиск:

(?<!^)((?<![[:upper:]])[[:upper:]]|[[:upper:]](?![[:upper:]]))

Заменить:

 $1

обратите внимание на пространство перед $1

Изменить: исправить.