这是我的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
)
)
演示