仅当下一个字符是小写时才按大写分割


Split by uppercase only if the next character is a lowercase

我正在尝试分割字符串,如:"ThisIsA string "

我希望它像这样分割:" this Is A STRING"

我当前的正则表达式给了我以下结果:"This Is A S T R I N G"

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

是否有可能修改正则表达式,使其仅在以下字符为小写时进行分割?

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

Try

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

使用forward:

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

[a-z0-9]仅在后跟[A-Z]时才匹配。

演示

去掉'?