猿问

正则匹配,大括号设置匹配次数时,小括号内容不能正确匹配的问题

如下代码

preg_match_all('/(\\d{2}\\s){3,}/',"111333 222 33 afdafdafdafdafd01 02 03 05 07 ",$temp);
var_dump($temp);

结果是

array(2) { [0]=> array(1) { [0]=> string(15) "01 02 03 05 07 " } [1]=> array(1) { [0]=> string(3) "07 " } }

小括号中的匹配结果不是应该是01 ,02 ,03 ,05 ,07 ,吗?为何只匹配到了一个07 ,是因为{3,}的原因?那么怎么写能匹配到下面这样的结果?

array(2) { [0]=> array(1) { [0]=> string(15) "01 02 03 05 07 " } [1]=> array(5) { [0]=> string(3) "01 " [1]=> string(3) "02 " [2]=> string(3) "03 " [3]=> string(3) "05 " [4]=> string(3) "07 " }  }
拉风的咖菲猫
浏览 464回答 1
1回答

Helenr

没错是因为{3,}的原因根据你原来的写法猜测,你想要匹配到连续3组以上由两个数字组成的情况,且两个数字后面紧接着空白字符。如果是这样的情况的话,你可以从匹配到的结果数组array[0],"01 02 03 05 07 "这个结果再做一步切割就可以了。
随时随地看视频慕课网APP
我要回答