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