Php 正则表达式理解。获取大写单词。群序列

Php 正则表达式理解。获取大写单词。群序列,php,regex,Php,Regex,我有一个功能: public static function getUpperCase($str) { preg_match_all('/([A-Z][a-zA-Z0-9-]*[\s])([A-Z][a-zA-Z0-9-]*[\s]?)+/', $str, $matches); return $matches[0]; } 当我尝试测试我的字符串时: 想想一个Redditor的故事,他知道Google Home是否有 内部温度传感器。他在家里和家里感到有点冷

我有一个功能:

public static function getUpperCase($str) {     
    preg_match_all('/([A-Z][a-zA-Z0-9-]*[\s])([A-Z][a-zA-Z0-9-]*[\s]?)+/', $str, $matches);     
    return $matches[0];
}
当我尝试测试我的字符串时:

想想一个Redditor的故事,他知道Google Home是否有 内部温度传感器。他在家里和家里感到有点冷 店员问:“里面的温度是多少?”他想 这个系统可以从他的巢里的恒温器计算出温度 并向他汇报

我得到了以下结果:

[1]: Google Home
我如何获得以下信息:

[1]: Consider
[2]: Redditor
[3]: Google Home
[4]: He
[5]: What
[6]: He
[7]: Nest

+
量词替换为星形量词
*
或使用以下简化版本:

[A-Z]\w+(?:\s+[A-Z]\w+)*

+
量词替换为星号量词
*
或使用以下简化版本:

[A-Z]\w+(?:\s+[A-Z]\w+)*

@revo的答案是正确的。但是,如果要保留您的版本,请检查以下版本:

([A-Z][A-zA-Z0-9-]*[\s]?)+


请参阅:

@revo的答案是正确的。但是,如果要保留您的版本,请检查以下版本:

([A-Z][A-zA-Z0-9-]*[\s]?)+


请参阅:

为了简单起见,我使用了
\w
但是如果它不适合您的需要,您可以使用您自己的角色类。为了简单起见,我使用了
\w
但是如果它不适合您的需要,您可以使用您自己的角色类。