繁体   English   中英

PHP preg_match_all正则表达式

[英]PHP preg_match_all regex

如果我有这样的字符串: 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/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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM