加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

如何以大写字母添加字符串空格,但是使用PHP和正则表达式将连续的

发布时间:2020-12-13 13:57:49 所属栏目:PHP教程 来源:网络整理
导读:我想使用像preg_replace()和正则表达式之类的 PHP方法,使用大写字母添加一个字符串空格,但是我只想在连续的第一个大写字母上添加一个空格.我还希望正则表达式知道连续资本中的最后一笔资本应该是下一个占有空间的首都. 这些字符串是例子: TodayILiveInTheUS
我想使用像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之前的空间

编辑:修复.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读