Matlab通过正则表达式从字符串单元格中提取



我有一个由几千个字符串组成的单元格,其中包含一个或多个下划线,如下所示:

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将其应用于单元格中的每个字符串。

相关内容

  • 没有找到相关文章