MATLAB: Regexprep does not exactly what I want

regexprep

Dear all,
I have the following cell array
Charge = {'OH-1'} {'KOH+0'} {'K+1'} {'I-1'} {'HI+0'} {'H3O+1'} {'H2O+0'}
I want to remove all information before the + and – signs. Therefore I tried the following:
regexprep(Charge,'[^-+].','');
which produces
{'-1'} {'0'} {'1'} {'1'} {'+0'} {'1'} {'0'}
This works well except in case of only one character in front of the minus sign (i.e. in case of I-1). In that case, the – sign is also deleted. The – signs are crucial to be included, the + signs not.
Any suggestions?
Thanks, Tim

Best Answer

There's definitely a way to do it using regexprep, but I found this solution first, so hopefully it is sufficient.
Charge = {'OH-1','KOH+0','K+1','I-1','HI+0','H3O+1','H2O+0'};
c = regexp(Charge,'[-+]\w*','match');
cc = cat(2,c{:}); % put back into cell array
Related Question