是否有与 strmatch 等效的函数,它返回以指定正则表达式开头的所有数组元素的数字索引(而不是 string ?
背景:我有一个名为strarray
. 我想过滤掉所有没有特定strprefix
. 以下代码查找存在特定前缀的字符串数组 ( strmatch func ) 的索引,然后从包含前缀的行构建新数组:
indexes = [];
n = strmatch(strprefix, strarray);
indexes = [indexes,n];
indexes = sort(indexes);
newarray = strarray(indexes);
它工作正常,但是它prefix
是一个字符串,我想改用定义的正则表达式。
或者也许有一种更简单的方法(一个班轮?)来完成这样的任务?
更新
我知道正则表达式功能。我正在尝试从字符串数组中过滤掉字符串,但我很难在一两个步骤中完成它。我当前的代码执行此操作(不确定它是否是正确的 Matlab 编码方式)。
- 步骤 1. 清空不带前缀的字符串:
regexp(strarray,[prefix,'.*'],'match','once');
- Step 2. 获取空行索引
emptyCells = cellfun(@isempty,array);
- 步骤 3. 删除空行
array(emptyCells) = [];