gpt4 book ai didi

php - 如何使用 PHP 和正则表达式在字符串中的大写字母处添加空格,但将连续的大写字母保持在一起?

转载 作者:行者123 更新时间:2023-12-03 00:11:13 25 4
gpt4 key购买 nike

我想使用像 preg_replace() 这样的 PHP 方法和正则表达式向大写字母上的字符串添加一个空格,但我只想在第一个大写字母上添加一个空格连续的。我还希望正则表达式知道连续大写字符串中的最后一个大写应该是下一个在前面放置空格的大写。

这些字符串是示例:

TodayILiveInTheUSAWithSimonUSATodayIAmSOOOBored

become:

 Today I Live In The USA With Simon USA Today I Am SOOO Bored

Can this be done, and how?

This question ( Regular expression, split string by capital letter but ignore TLA ), seems to accomplish this with .net.

WORKING SOLUTION

Here is the complete code that I use:

$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之前的空格

编辑:修复。

关于php - 如何使用 PHP 和正则表达式在字符串中的大写字母处添加空格,但将连续的大写字母保持在一起?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8611617/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com