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

时间:2019-05-25 19:24:29

标签: php preg-match-all regex-lookarounds regex-group preg-split

我有这样的字符串:

SadnessSorrowSadnessSorrow

单词串联在一起,没有任何空格。每个单词都以大写字母开头。我想将这些单词分开,然后选择前2个单词放入新字符串中。

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

我应该怎么做?

我尝试使用[A-Z],但由于某种原因我无法正确使用它。

2 个答案:

答案 0 :(得分:3)

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

$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

答案 1 :(得分:2)

我发布问题后答案就闪了

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

它给出:

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