2015-12-30 70 views
1

我需要在保持分隔符的情況下用小寫字母分隔字符串。舉例來說,如果我有這樣的字符串:
$string = '1_and_2_not_3';
所需的輸出將是:php preg_split:用小寫字母拆分字符串underscores

[ 
    0 => "1", 
    1 => "_and_2", 
    2 => "_not_3" 
] 

現在,我這樣做:
$stringArray = preg_split('/[_(.*?)_]/u', $string, PREG_SPLIT_DELIM_CAPTURE); 然而,這不是捕捉整個分隔符和其只抓住第一場比賽。

[ 
    0 => "1", 
    1 => "and_2_not_3" 
] 

什麼正則表達式會抓住所有匹配加上給我完整的分隔符?

回答

3

您可以使用向前分割,斷言下劃線和小寫字母的位置。

$results = preg_split('/(?=_[a-z])/', $str); 

eval.in

+0

這應該工作,但由於某種原因,使preg_split是不是全球範圍內爲我分裂。我仍然得到'_and_2_not_3'作爲結果數組中的第二項。 –

+1

沒關係。刪除PREG_SPLIT_DELIM_CAPTURE解決了這個問題。 –