Разбивать на верхний регистр, только если следующий символ является строчным

#php #regex #string

#php #регулярное выражение #строка

Вопрос:

Я пытаюсь разделить строку типа:»ThisIsA STRING»

Я хочу, чтобы он разделялся следующим образом: «Это строка»

Мое текущее регулярное выражение дает мне следующий результат: «Это S T R I N G»

 $filname_desc = preg_replace('/([a-z0-9])?([A-Z])/','$1 $2',$filname_desc);
  

Возможно ли изменить регулярное выражение, чтобы оно разделялось только в том случае, если следующий символ является строчным?

Ответ №1:

 php> $str = "ThisIsA STRING"
php> echo preg_replace('/([a-z])([A-Z])/','$1 $2', $str)
This Is A STRING
  

Ответ №2:

Попробуйте

 $filname_desc = preg_replace('/([a-z0-9] )?([A-Z] )/','$1 $2',$filname_desc);
  

Ответ №3:

Используйте предварительный:

 $filname_desc = preg_replace('/([a-z0-9])(?=[A-Z])/','$1 ',$filname_desc);
  

[a-z0-9] совпадает, только если за ним следует [A-Z] .

ДЕМОНСТРАЦИЯ

Ответ №4:

Удалите символ ‘?’, заключенный в квадратные скобки.