正则表达理解。获取大写单词。组序列

时间:2017-11-05 03:59:23

标签: 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是否有   内部温度传感器。他在家里感觉有点冷   问助理“里面的温度是多少?”他想到了这一点   系统会从他的Nest恒温器中找出温度   并报告给他。

我得到以下结果:

[1]: Google Home

我如何获得以下内容:

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

2 个答案:

答案 0 :(得分:2)

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

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

Live demo

答案 1 :(得分:0)

@ revo的回答是正确的。但是,如果您想继续使用您的版本,请查看以下版本:

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

请参阅:http://regexr.com/3h426