Я хочу добавить пробел в строку заглавными буквами, используя PHP-метод, такой как preg_replace()
и регулярное выражение, но я хочу только добавить пробел в первую заглавную букву, когда они будут непрерывными. Я также хотел бы, чтобы регулярное выражение узнало, что последняя столица в непрерывной цепочке капиталов должна стать следующей столицей, чтобы положить пространство раньше.
Эти строки являются примерами:
TodayILiveInTheUSAWithSimon USAToday IAmSOOOBored
стали:
Сегодня я живу в США с Саймоном США сегодня Я СООО скучаю
Можно ли это сделать и как?
Этот вопрос ( регулярное выражение, разделение строки заглавной буквой, но игнорирование TLA ), похоже, выполняется с помощью .net.
РАБОЧИЙ РЕШЕНИЕ
Вот полный код, который я использую:
$string = 'TodayILiveInTheUSAWithSimon'; $regex = '/(?<!^)((?<![[:upper:]])[[:upper:]]|[[:upper:]](?![[:upper:]]))/'; $string = preg_replace( $regex, ' $1', $string );
Обе эти регулярные выражения:
/(?<!^)((?<![[:upper:]])[[:upper:]]|[[:upper:]](?![[:upper:]]))/ /((?<=[az])(?=[AZ])|(?=[AZ][az]))/
Первый из решений @ Regexident ниже и очень немного быстрее второго.
Найти:
(?<!^)((?<![[:upper:]])[[:upper:]]|[[:upper:]](?![[:upper:]]))
Заменить:
$1
обратите внимание на пространство до $1
Изменить: исправить.