PHP preg_match_all正则表达式

时间:2011-02-25 20:52:47

标签: php regex preg-match-all

如果我有一个字符串:10/10/12/12

我正在使用:

$string = '10/10/12/12';
preg_match_all('/[0-9]+\/[0-9]+/', $string, $results);

这似乎只匹配10/1012/12。我还想匹配10/12。是因为匹配后10/10匹配了吗?所以在第一场比赛之后,它只会匹配/12/12的内容?

如果我想匹配所有10/1010/1212/12,我的正则表达式应该是什么样的?感谢。

编辑:我这样做了

$arr = explode('/', $string);
$count = count($arr) - 1;
$newarr = array();
for ($i = 0; $i < $count; $i++)
{
    $newarr[] = $arr[$i].'/'.$arr[$i+1];
}

1 个答案:

答案 0 :(得分:3)

我建议不要使用正则表达式。相反,您可以使用explode首先拆分斜杠。然后迭代这些部分,检查两个连续的部分,它们都只包含数字。


你的正则表达式不起作用的原因是因为匹配消耗了它匹配的字符。搜索下一场比赛从上一场比赛结束之后开始。

如果你真的想使用正则表达式,可以使用零宽度匹配(例如前瞻)来避免使用字符,并在前瞻中放置捕获匹配。

'#[0-9]+/(?=([0-9]+))#'

查看在线工作:ideone

相关问题