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

时间:2011-11-10 16:23:08

标签: php regex string

我正在尝试分割一个字符串,如:" ThisIsA STRING"

我希望它像这样分开:"这是一个STRING"

我现在的正则表达式给了我以下结果:"这是一个问题"

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

如果以下字符是小写,是否可以将正则表达式修改为仅拆分?

4 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分:1)

尝试

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

答案 2 :(得分:0)

使用Lookahead

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

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

Demo

答案 3 :(得分:0)

删除'?'括号之间的符号。