我有一个字符串
$str = "101WE3P-1An Electrically-Small104TU5A-3,Signal-Interference Duplexers Gomez-GarciaRobertoTU5A-3-01"
我想按数字分割这个字符串,例如:"101WE3P-1An...."应该是第一个元素,"104TUA…"应该是第二个元素?
有人给我写了下面的代码在我之前的问题preg_match匹配连续三个数字的子字符串? some little minutes ago:
$result = preg_split('/^d{3}$/', $page, -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);
基线是我想匹配三个数字,后面跟着任何一个大写字母,后面跟着任何东西,包括t ?
您可以使用前瞻性断言告诉preg_split()
在字符串的任何点(后面跟着三个数字)进行拆分。
$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);
似乎得到正确的结果为您的样本