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

Я пытаюсь разбить строку, например: "ThisIsA STRING"

Я хочу, чтобы она разбилась следующим образом: "This Is A STRING"

Мое текущее регулярное выражение дает мне следующий результат:"This is ASTRING"

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

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

Ответы [ 4 ]

6 голосов
/ 10 ноября 2011
php> $str = "ThisIsA STRING"
php> echo preg_replace('/([a-z])([A-Z])/','$1 $2', $str)
This Is A STRING
1 голос
/ 10 ноября 2011

Попробуйте

$filname_desc = preg_replace('/([a-z0-9]+)?([A-Z]+)/','$1 $2',$filname_desc);
0 голосов
/ 10 ноября 2011

Удалить '?' символ в скобках.

0 голосов
/ 10 ноября 2011

Используйте Lookahead :

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

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

Демо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...