2014-08-27 63 views
0

使用正则表达式需要排除从字符串的数字从字符串位数,并返回MATLAB细胞字符串数组排除在MATLAB

e.g str = 'abc76.5_pol0.00_Ev0.3' 

output {'abc','pol','Ev'} 

字符串不是具体到“ABC”等,也可能是长期

的字符
+0

在字符串中是否也有符号,例如 - ''abc $$ 76.5_pol0.00_Ev0.3''也许? – Divakar 2014-08-27 07:55:58

+0

字母和数字之间没有符号 – IntelK 2014-08-27 07:58:15

+0

好的,数字之间可能或只是在字符串中的任何地方? – Divakar 2014-08-27 07:58:53

回答

4

使用正则表达式。

str = 'abc76.5_pol0.00_Ev0.3'; 
C = regexp(str, '[a-zA-Z]*', 'match'); 
+0

解决方案工作正常 – IntelK 2014-08-27 09:07:54

2

这是我发现

output = regexp(str, '[^a-zA-Z]', 'split'); 
output(cellfun(@isempty,output)) = []; 
+0

解决方案工作正常 – IntelK 2014-08-28 04:13:35

1

您还可以使用strsplitRegularExpression选项的解决方案。

C = strsplit(str, '[^a-zA-Z]', 'DelimiterType', 'RegularExpression') 
+0

我相信strsplit是在最近版本的MATLAB中添加的一个函数,我使用R2010b并且该函数不可用 – IntelK 2014-08-27 07:56:14

+0

您的解决方案与我的非常相似,但我不明白为什么'C'结尾处有一个空单元格。 – Jommy 2014-08-27 07:59:25