2015-05-04 91 views
3

我遇到了問題preg_split。我需要一個正則表達式來將我的字符串分解爲數字和字符。我的字符串的一個例子是:Preg_Split分隔符號和字符串

1_AB_CD_2_ABC_3_ABD 

,我想結果分裂:

1 
AB_CD 
2 
ABC 
3 
ABD 

我試圖用這個表達式表達,但這個不行:

preg_split("/(^\d)(?=_)|(?<=_)(\d)(?=_)/",$sequence,PREG_SPLIT_DELIM_CAPTURE). 
+0

你嘗試這樣的:https://ideone.com/ifHMJ0? –

+0

「2_AB_3 _AB_CD_ER_1」的結果是什麼? – Tushar

+0

嗨@stribizhev我試過你的代碼,一個真實的例子,但這是結果:https://ideone.com/WL2Vxs。無論如何謝謝... –

回答

1
(?<=\d)_(?=[A-Z0-9]{2})|(?<=[A-Z0-9]{2})_(?=\d) 

試試看。

https://regex101.com/r/uE3cC4/26

$returnValue = preg_split('/(?<=\\d)_(?=[A-Z0-9]{2})|(?<=[A-Z0-9]{2})_(?=\\d)/', '1_AB_CD_2_ABC_3_ABD', -1, PREG_SPLIT_NO_EMPTY); 
+0

我試過你的解決方案,但沒有工作。 :(分割字符串不正確 –

+0

我試過你的解決方案:($ result = preg_split(「/(?<= \ d)_(?= [AZ])|(?<= [AZ])_(?= \ d)/「,$ sequence))但不工作:(分割字符串不正確:1_ITBI1303000100_2_ITTO10051004_3_ITTO10060018_4_ITBI1303000100返回此表達式」1 ITBI1303000100_2 ITTO10051004_3 ITTO10060018_4 ITBI1303000100「.... –

+0

對不起,但preg_split仍然不起作用。已嘗試使用或不使用PREG_DELIM_CAPTURE $ result = preg_split(「/(?= \\ d)_(?= [AZ])|(?<= [AZ])_(?= \\ d)/」,$序列,PREG_SPLIT_DELIM_CAPTURE)$ result = preg_split(「/(?<= \\ d)_(?= [AZ])|(?<= [AZ])_(?= \\ d)/」 –