php 在字符串中的大写字母前面放置一个空格(正则表达式)

标签 php regex

我有一些字符串,其中包含聚在一起的单词,我需要将它们分开。

例如 ThisWasCool - 这很酷
MyHomeIsHere - 我的家在这里

我正在慢慢了解正则表达式,我相信要做到这一点我应该使用 preg_replace。我的问题是将表达式放在一起以找到匹配项。

我只做了这么多

   preg_replace('~^[A-Z]~', " ", $string)

每个字符串都包含很多单词,但只有第一个单词包含成串的单词,因此使用我上面的示例字符串将是
“ThisWasCool to visit you again”-“ThisWasCool to visit you again”

我已经告诉它从头开始,寻找首都,但我不知道该怎么做 - 仅限于每个字符串的第一个单词 - 如何在空格后的替换部分重用大写字母

最佳答案

问题

  1. 你的正则表达式 '~^[A-Z]~'将仅匹配第一个大写字母。查看 Meta CharactersPattern Syntax了解更多信息。

  2. 您的替换是换行符 '\n'而不是空格。

解决方案

使用此代码:

$String = 'ThisWasCool';
$Words = preg_replace('/(?<!\ )[A-Z]/', ' $0', $String);

(?<!\ )assertion这将确保我们不会在已经有空格的大写字母之前添加空格。

关于php 在字符串中的大写字母前面放置一个空格(正则表达式),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1089613/

相关文章:

php - 构建 Reducisaurus URL

php - 鼠标悬停时更改表格行的颜色

php - laravel 中的中间件是什么?

javascript - 为什么我的 JavaScript 代码没有按预期运行?

regex - Perl正则表达式如何否定一个部分

Java 的 Matcher 无法正确匹配输入

regex - 理解(并形成)这个有限自动机的正则表达式

php - 如何将 PHP 文件加载到变量中?

php - mysql_num_rows 无法正常工作

php - 带有大文件的 file_get_contents 和 file_put_contents