regexprep does not exactly what I want
2 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
hyble
el 16 de Oct. de 2019
Comentada: hyble
el 17 de Oct. de 2019
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
0 comentarios
Respuesta aceptada
Daniel M
el 16 de Oct. de 2019
Editada: Daniel M
el 16 de Oct. de 2019
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
6 comentarios
Guillaume
el 16 de Oct. de 2019
The comment about the regexprep referred to the original question, not your answer.
I wrote most of my comment shortly after you posted your answer but had to dash off to a meeting before posting it. When I finally posted it, it was a bit out of date. Sorry about that.
Más respuestas (1)
Stephen23
el 16 de Oct. de 2019
Editada: Stephen23
el 16 de Oct. de 2019
>> regexprep(Charge,'^[^-+]*','')
ans =
'-1' '+0' '+1' '-1' '+0' '+1'
>> regexp(Charge,'[-+].+$','once','match')
ans =
'-1' '+0' '+1' '-1' '+0' '+1'
1 comentario
Daniel M
el 16 de Oct. de 2019
This will handle edge cases better than my solution above. More robust.
Ver también
Categorías
Más información sobre Number Theory en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!