我有一个由几千个字符串组成的单元格,其中包含一个或多个下划线,如下所示:
cel={'ABC_D234_567','ABD_X157_224','PT_D204_157','PT_O268_578','DTA_P2345','CBDRT_X345_D325};
我需要提取第一个下划线之前的所有字母和后面的一个字母;例如,"ABC_D"、"PT_O"或"CBDRT_X"。
我通过使用strfind找到了一种方法,但它需要几行代码;为所有下划线查找索引,只使用第一个下划线的索引,然后提取从1到(index+1(的字符串。
我敢肯定,一个人可以用一行或几行做到这一点;类似于:
cel_new = regexe(cel,'something something','once','match');
这"什么东西"会是什么?
使用cellfun
将此操作应用于单元格的每个元素。像
cel={'ABC_D234_567','ABD_X157_224','PT_D204_157','PT_O268_578','DTA_P2345','CBDRT_X345_D325'};
cel_new=cellfun(@(x) regexprep(x,'^([A-Z]+_[A-Z]).*','$1','once'), cel,'uni',false)
regexprep
帮助您查找和提取模式,cellfun
将其应用于单元格中的每个字符串。