2016-09-25 69 views
0

我得從字符串中提取字符串,如"THE NEED OF FOLLOWING A RELIGION "。 我提取了單個詞,如THE,NEED,OF ......但我需要大寫字母如"THE NEED OF FOLLOWING A RELIGION"的完整字符串,但無法這樣做,請大家幫忙。全部大寫字符串,空格在php中

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

感謝

+2

正則表達式也需要包含空格 – RamRaider

+0

但我無法做到這一點。因爲我不知道。會有多少空間......以及如何達到最終狀態。 –

+1

你不必擔心像你沒有關於字母的空間數量。 '/ [A-Z] * /' – revo

回答

3

一個非常基本的修改原來的代碼在同一時間發現的超過1首都。

$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>'; 

輸出:

Array 
(
    [0] => Array 
     (
      [0] => WITH MIXED CASE 
      [1] => WE ONLY WANT 
     ) 

) 
+0

謝謝。,,它的工作原理 –

0

你的正則表達式剛好錯過定界符的一些條件,這是

字必須被任一隨後或通過空間含鉛。

轉換句以上的正則表達式,我們得到

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

上述正則表達式可以解釋成兩種

\sWORD 
WORD\s 
\sWORD\s 

DEMO

0

您可以將空白添加到您的班級,如[A-Z ]。現在您可以使用大寫字母來獲取所有字符串,也可以使用單個空格。爲了避免使用單個空格,您可以使用([A-Z]+[A-Z ]*[A-Z])我添加了()以捕獲匹配的結果。 你可以在行動here檢查它。