Разделение строкового массива на основе цифр в php?

У меня есть строка

$str = "101WE3P-1An Electrically-Small104TU5A-3,Signal-Interference Duplexers Gomez-GarciaRobertoTU5A-3-01" 

Я хочу разбить эту строку на числа, например: «101WE3P-1An ….» должен быть первым элементом, «104TUA …» должен быть вторым элементом?

Кто-то написал мне следующий код в моем предыдущем вопросе preg_match для соответствия подстроке трех чисел подряд? несколько минут назад:

 $result = preg_split('/^\d{3}$/', $page, -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY); 

Базовый уровень: я хочу сопоставить трехзначное число, за которым следует любое отсутствие капиталов, за которым следует что-нибудь, включая \ t? Заранее спасибо.

Вы можете сообщить preg_split() чтобы разбить в любой точке строки, за которой следуют три цифры, используя утверждение lookahead .

 $str = "101WE3P-1An Electrically-Small104TU5A-3,Signal-Interference Duplexers Gomez-GarciaRobertoTU5A-3-01"; $result = preg_split('/(?=\d{3})/', $str, -1, PREG_SPLIT_NO_EMPTY); var_export($result); 

Дает следующий массив:

 array ( 0 => '101WE3P-1An Electrically-Small', 1 => '104TU5A-3,Signal-Interference Duplexers Gomez-GarciaRobertoTU5A-3-01', ) 

Флаг PREG_SPLIT_NO_EMPTY используется, потому что начало строки также является точкой, где есть три цифры, поэтому здесь происходит пустое разделение. Мы могли бы изменить регулярное выражение так, чтобы он не разбивался в самом начале строки, но это сделало бы его немного более трудным для понимания на первый взгляд, тогда как флаг очень ясен.

Я попробовал матч, а не раскол

 preg_match_all('/^(\d{3}.*?)*$/', $str, $matches); var_dump($matches); 

Кажется, чтобы получить правильный результат для вашей выборки