正则表达式,如何获取子匹配多个结果?

$s="aab44cb45cb46cdd、xxb78cb90cb76cee";
$p1="#x.*(b\d+c).*e#"; //这个表达式只能取出b76c
preg_match_all($p1,$s,$match);

如上字符串和表达式,想取出b78c b90c b76c,不要前面的b44c b45c b46c,所以不能直接用b\d+c匹配,也不能分步多匹配一次,请教大神该如何改?

<?php
$str = "aab44cb45cb46cdd、xxb78cb90cb76cee";
$str = preg_replace('/[^、]*、([^、]*)/','$1',$str);;
preg_match_all('/(b\d+c)/',$str,$mat);
for($i=0;$i<count($mat[0]);$i++){
    echo $mat[1][$i]." ";
}
?>

追问

非常感谢大神的回复,不过这些分几步的提取方式我都会的,只想知道一次取出想要结果的正则表达式方法。求大神帮忙,只用一次preg_match_all取出想要结果

追答<?php
$str = "aab44cb45cb46cdd、xxb78cb90cb76cee";
preg_match_all('/(b\d+c)(?![^、]*、)/',$str,$mat);
for($i=0;$i<count($mat[0]);$i++){
    echo $mat[1][$i]." ";
}
?>

温馨提示:答案为网友推荐,仅供参考
相似回答