所有大写字母在php中都有空格

时间:2016-09-25 10:52:30

标签: php regex preg-match-all

我必须从字符串中提取"THE NEED OF FOLLOWING A RELIGION "之类的字符串。 我提取了THENEEDOF这样的单词...但我需要完整的大写字母字符串"THE NEED OF FOLLOWING A RELIGION",但不能这样做,请帮助。< / p>

preg_match_all("/[A-Z]*/", $html, $out);

由于

3 个答案:

答案 0 :(得分:3)

对原始代码进行非常基本的修改,以便一次查找超过1的大写字母。

-x

输出:

$str='This is a string WITH MIXED CASE words and WE ONLY WANT capitals';
preg_match_all("/[A-Z\s]{2,}/", $str, $out);
echo '<pre>',print_r($out,true),'</pre>';

答案 1 :(得分:0)

你的正则表达式错过了分隔符的某些条件,这是

  

单词必须由空格跟随或引导。

将上面的句子转换为我们得到的正则表达式

[A-Z]*(?=\s)|(?<=\s)[A-Z]*

上面的正则表达式可以解释为

\sWORD
WORD\s
\sWORD\s

请参阅DEMO

答案 2 :(得分:0)

您可以像[A-Z ]一样为您的班级添加空白区域。现在你可以用大写单词获得所有字符串,但也可以获得单个空格的长度。为了避免获得单个空格,你可以使用([A-Z]+[A-Z ]*[A-Z])我添加了()来捕获匹配的结果。 您可以查看操作here