textscan
works here (assuming white-space delimiting the reactants):
>> C = textscan(reaction,'%f%s')
C =
[3x1 double] {3x1 cell}
>> C{1}' %' decimals not shown
ans =
-1 1 2
>> C{2}
ans =
'CdCl2(aq)'
'Cd++'
'Cl-'
Also assuming reaction
starts with a number.