2013-10-10 46 views
0

我想從字符串拆分數字和字母,但有問題。
輸入像:
輸入實施例1:A5
輸入例2:C16
輸入實施例3:A725
輸入實施例4:X05
結果必須是:
結果實施例1:'A','5'
結果示例2:'C','16'
結果例3:'A','725'
結果例子4:'X','05'正則表達式從字母拆分數字

我嘗試將其與正則表達式貝羅,但不給一個好的結果:
preg_split('/(?=\d+)/', $input)

回答

3

您還需要添加一個負向後看,使確定所選的空字符串不在兩位數的中間。

目前對於字符串A725,您正則表達式將在空字符串分割前725,因爲所有的人都跟着至少一個數字。

你可以使用這個表達式:

preg_split('/(?<!\d)(?=\d+)/', $input) 
+0

酷,感謝羅希特耆那教。沒有任何說的更多的需要,這是正確的;) – Root125

+0

@root不客氣:) –

+0

@root你可以標記答案爲接受:) –

0

您可以使用:

$s = 'A5,C16,A725,X05'; 
if (preg_match_all("~(?>[a-z]+|\d+)~i", $s, $arr)) 
    var_dump($arr[0]); 

給出:

array(8) { 
    [0]=> 
    string(1) "A" 
    [1]=> 
    string(1) "5" 
    [2]=> 
    string(1) "C" 
    [3]=> 
    string(2) "16" 
    [4]=> 
    string(1) "A" 
    [5]=> 
    string(3) "725" 
    [6]=> 
    string(1) "X" 
    [7]=> 
    string(2) "05" 
} 
+0

謝謝anubhava,我接受下面的答案,我現在編輯問題以獲得更好的輸入和結果信息,也謝謝)。 – Root125