我有一些字符串,其中包含聚在一起的单词,我需要将它们分开。
例如
ThisWasCool - 这很酷
MyHomeIsHere - 我的家在这里
我正在慢慢了解正则表达式,我相信要做到这一点我应该使用 preg_replace。我的问题是将表达式放在一起以找到匹配项。
我只做了这么多
preg_replace('~^[A-Z]~', " ", $string)
每个字符串都包含很多单词,但只有第一个单词包含成串的单词,因此使用我上面的示例字符串将是
“ThisWasCool to visit you again”-“ThisWasCool to visit you again”
我已经告诉它从头开始,寻找首都,但我不知道该怎么做 - 仅限于每个字符串的第一个单词 - 如何在空格后的替换部分重用大写字母
最佳答案
问题
你的正则表达式
'~^[A-Z]~'
将仅匹配第一个大写字母。查看 Meta Characters在 Pattern Syntax了解更多信息。您的替换是换行符
'\n'
而不是空格。
解决方案
使用此代码:
$String = 'ThisWasCool';
$Words = preg_replace('/(?<!\ )[A-Z]/', ' $0', $String);
(?<!\ )
是 assertion这将确保我们不会在已经有空格的大写字母之前添加空格。
关于php 在字符串中的大写字母前面放置一个空格(正则表达式),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1089613/