Reg Exp - preg_match_all减少数组结果



这是我的Reg Exp "[c]?[\d+|\D+]\s*"。我的输入是"c7=c4/c5*100",结果是:

数组 ( [0] => 数组 ( [0] => c7 [1] => = [2] => c5 [3] => + [4] => c3 [5] => * [6] => 1 [7] => 0 [8] => 0 ) (

但我想要的是:

数组 ( [0] => 数组 ( [0] => c7 [1] => = [2] => c5 [3] => + [4] => c3 [5] => * [6] => 100 ) (

我似乎无法让最后一部分工作,我迷茫了下一步该怎么做 - 有人可以帮忙吗?

谢谢 保罗

您指定了一个字符类[d+|D+]该字符类将与任何指定的字符匹配。我认为您的意思是将 or|与分组结构一起使用c?(?:d+|D+)s*但在这种情况下,它会匹配 c 后跟d+D,以便立即匹配=符号,导致c=作为匹配,/c作为匹配。

尝试匹配可选的 cc?后跟一个或多个数字,或者|匹配不匹配数字D

c?d+|D

$re = '/c?d+|D/m';
$str = 'c7=c4/c5*100';
preg_match_all($re, $str, $matches);
print_r($matches);

这将导致:

Array
(
[0] => Array
(
[0] => c7
[1] => =
[2] => c4
[3] => /
[4] => c5
[5] => *
[6] => 100
)
)

演示

最新更新