2015-05-04 92 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)/” –