2011-11-09 84 views
4

我想要用包含在字符串中的大寫字母來獲取所有單詞的數組。但是,只有當該行以「set」開頭時。正則表達式和split camelCase

例如:

- string "setUserId", result array("User", "Id") 
- string "getUserId", result false 

沒有關於 「設置」 正則表達式看起來像/([A-Z][a-z]+)/

+1

你不能用匹配來做它我認爲,因爲PCRE不支持在lookbehinds中的變量重複。而是使用@codaddict解決方案。 – FailedDev

+0

編輯:只有一個正則表達式。 – FailedDev

回答

4
$str ='setUserId';       
$rep_str = preg_replace('/^set/','',$str); 
if($str != $rep_str) { 
     $array = preg_split('/(?<=[a-z])(?=[A-Z])/',$rep_str); 
     var_dump($array); 
} 

See it

而且您正則表達式也將努力限制:

$str = 'setUserId'; 
if(preg_match('/^set/',$str) && preg_match_all('/([A-Z][a-z]*)/',$str,$match)) { 
     var_dump($match[1]);              
} 

See it

+0

非常好+ 1!這是可能的,而不需要替換/拆分即匹配? – FailedDev

+0

@FailedDev:非常有可能。我已經更新了我的答案。 – codaddict

+0

雙正則表達式。尼斯。謝謝!我不能給+2不幸的是:D – FailedDev