我想使用像preg_replace()和正则表达式之类的
PHP方法,使用大写字母添加一个字符串空格,但是我只想在连续的第一个大写字母上添加一个空格.我还希望正则表达式知道连续资本中的最后一笔资本应该是下一个占有空间的首都.
这些字符串是例子:
TodayILiveInTheUSAWithSimon USAToday IAmSOOOBored
成为:
Today I Live In The USA With Simon USA Today I Am SOOO Bored
这可以做到吗,怎么样?
这个问题(Regular expression,split string by capital letter but ignore 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的解决方案,并且比第二个更快.
找:
(?<!^)((?<![[:upper:]])[[:upper:]]|[[:upper:]](?![[:upper:]]))
更换:
$1
注意$1之前的空间
编辑:修复.