这是我的Reg Exp“ [c]?[\ d + | \ D +] \ s *”。我的输入是“ c7 = c4 / c5 * 100”,结果是:
Array ( [0] => Array ( [0] => c7 [1] => = [2] => c5 [3] => + [4] => c3 [5] => * [6] => 1 [7] => 0 [8] => 0 ) )
但是我想要的是:
Array ( [0] => Array ( [0] => c7 [1] => = [2] => c5 [3] => + [4] => c3 [5] => * [6] => 100 ) )
我似乎无法使最后一部分正常工作,我迷失了下一步的工作-有人可以帮忙吗?
谢谢, 保罗
答案 0 :(得分:1)
您指定了character class [\d+|\D+]
,它将与任何指定字符匹配。我认为您的意思是将{或{1}}与grouping构造|
一起使用,但在这种情况下,它将匹配c后跟c?(?:\d+|\D+)\s*
或\d+
,因此紧接着匹配\D
符号,导致=
作为匹配项和c=
作为匹配项。
尝试匹配可选的c /c
后跟一个或多个数字,或者c?
匹配不匹配数字|
\D
这将导致:
$re = '/c?\d+|\D/m';
$str = 'c7=c4/c5*100';
preg_match_all($re, $str, $matches);
print_r($matches);