I have a string of characters like this '12hjb42&34ni3&(*&' in MATLAB.
I want to separate the digits and letters and everything else through regex or some other easier way. How can I do this?
解决方案
Instead of using regular expressions, I think it would be easier to use the function ISSTRPROP:
str = '12hjb42&34ni3&(*&'; %# Your sample string
alphaStr = str(isstrprop(str,'alpha')); %# Get the alphabetic characters
digitStr = str(isstrprop(str,'digit')); %# Get the numeric characters
otherStr = str(~isstrprop(str,'alphanum')); %# Get everything that isn't an
%# alphanumeric character
Which would give you these results:
alphaStr = 'hjbni'
digitStr = '1242343'
otherStr = '&&(*&'
If you really wanted to use REGEXP, this is how you could do it:
matches = regexp(str,{'[a-zA-Z]','\d','[^a-zA-Z\d]'},'match');
alphaStr = [matches{1}{:}];
digitStr = [matches{2}{:}];
otherStr = [matches{3}{:}];