如何用大写字母分隔单词?

How to separate words by uppercase letters?

我有这样的字符串:

SadnessSorrowSadnessSorrow

其中单词没有任何连接 space。每个单词都以大写字母开头。我想将这些单词和 select 前 2 个单词分开以放入一个新字符串中。

我需要在 php 应用程序中使用 preg_match 函数执行此操作。

我该怎么办?

我尝试使用 [A-Z],但不知何故我没有正确使用它。

发布问题后答案闪现:

preg_match_all('([A-Z][a-z]+)', 'SadnessSorrowSadnessSorrow', $matches);

它给出:

(
[0] => Sadness
[1] => Sorrow
[2] => Sadness
[3] => Sorrow
)

这里,我们也可以将我们的字符串按大写字母拆分,可能类似于:

$str = "SadnessSorrowSadnessSorrow";

$str_array = preg_split('/\B(?=[A-Z])/s', $str);

foreach ($str_array as $value) {
    echo $value . "\n";
}

根据bobble bubble的建议,最好使用\B(?=[A-Z])而不是(?=[A-Z]),或者我们可以使用PREG_SPLIT_NO_EMPTY.

输出

Sadness
Sorrow
Sadness
Sorrow