如果我有一个字符串:10/10/12/12
我正在使用:
$string = '10/10/12/12';
preg_match_all('/[0-9]+\/[0-9]+/', $string, $results);
这似乎只匹配10/10
和12/12
。我还想匹配10/12
。是因为匹配后10/10
匹配了吗?所以在第一场比赛之后,它只会匹配/12/12
的内容?
如果我想匹配所有10/10
,10/12
,12/12
,我的正则表达式应该是什么样的?感谢。
编辑:我这样做了
$arr = explode('/', $string);
$count = count($arr) - 1;
$newarr = array();
for ($i = 0; $i < $count; $i++)
{
$newarr[] = $arr[$i].'/'.$arr[$i+1];
}
答案 0 :(得分:3)
我建议不要使用正则表达式。相反,您可以使用explode
首先拆分斜杠。然后迭代这些部分,检查两个连续的部分,它们都只包含数字。
你的正则表达式不起作用的原因是因为匹配消耗了它匹配的字符。搜索下一场比赛从上一场比赛结束之后开始。
如果你真的想使用正则表达式,可以使用零宽度匹配(例如前瞻)来避免使用字符,并在前瞻中放置捕获匹配。
'#[0-9]+/(?=([0-9]+))#'
查看在线工作:ideone