[英]PHP preg_match_all regex
如果我有这样的字符串: 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
10/12
12/12
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];
}
我建议不要使用正则表达式。 相反,您可以例如使用explode
首先在斜杠上分割。 然后遍历这些部分,检查两个连续的部分,它们都仅由数字组成。
正则表达式不起作用的原因是因为匹配项消耗了它匹配的字符。 从下一个比赛结束的位置开始搜索下一个比赛。
如果您确实想使用正则表达式,则可以使用零宽匹配(例如前瞻)来避免消耗字符,并将捕获匹配项放入前瞻中。
'#[0-9]+/(?=([0-9]+))#'
看到它在线上工作: ideone
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.