Я хочу добавить пробел в строку заглавными буквами, используя 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 и очень немного быстрее второго.