我在MATLAB中有一串类似'12hjb42&34ni3&(*&'的字符。

我想通过正则表达式或其他更简单的方法来分隔数字和字母以及其他所有内容。我怎样才能做到这一点?

最佳答案

与使用正则表达式相比,我认为使用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

这将为您带来以下结果:
alphaStr = 'hjbni'
digitStr = '1242343'
otherStr = '&&(*&'

如果您真的想使用REGEXP,那么可以这样做:
matches = regexp(str,{'[a-zA-Z]','\d','[^a-zA-Z\d]'},'match');
alphaStr = [matches{1}{:}];
digitStr = [matches{2}{:}];
otherStr = [matches{3}{:}];

关于regex - 如何在MATLAB中将字符串解析为字母,数字等?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4402281/

10-12 23:53