String Matlab:如何从字符串中删除前缀

String Matlab:如何从字符串中删除前缀,string,matlab,prefix,String,Matlab,Prefix,问题:在TrajCompact中,我使用regexp查找所有前缀和前缀后的值,代码如下: [digits{1:2}] = ndgrid(0:4); for k=1:25 matches(:,k)=regexp(TrajCompact(:,1),sprintf('%d%d.*',digits{1}(k),digits{2}(k)),'match','once'); end 我只需要匹配的后缀,如何从匹配中删除前缀?方法使用正则表达式 您可以将*部分放在一个组中,方法是将其括在括号中(

问题:在TrajCompact中,我使用regexp查找所有前缀和前缀后的值,代码如下:

[digits{1:2}] = ndgrid(0:4);
  for k=1:25
  matches(:,k)=regexp(TrajCompact(:,1),sprintf('%d%d.*',digits{1}(k),digits{2}(k)),'match','once');
  end
我只需要匹配的后缀,如何从匹配中删除前缀?

方法使用正则表达式 您可以将
*
部分放在一个组中,方法是将其括在括号中(即
(*)
)。Matlab对此有一些特殊的“标记”术语。在任何情况下,其工作原理的示例如下:

[match, group] = regexp('25blah',sprintf('%d%d(.*)',2,5),'match','once','tokens');
然后:

  • 匹配将是包含“25blah”的字符数组
  • 组将是包含字符串“blah”的1x1单元数组 也就是说,变量
    将保存您要查找的内容

    黑客方法 由于前缀始终为两位数,因此您也可以从匹配的第三个字符开始提取所有内容:

    my_string = match(3:end);
    
    其他评论 通过将
    ^
    添加到正则表达式的开头,可以要求前缀出现在字符串的开头。例如,排队:

    [match, group] = regexp('25blah',sprintf('^%d%d(.*)',2,5),'match','once','tokens');
    

    实际上,您当前的正则表达式将匹配字符串,如
    zzzzz25stuff
    。我不确定您是否希望这样做(假设它可以出现在您的数据中)。

    我的代码中的“组”是一个包含许多空数组的单元格数组:如何将其转换为矩阵?我尝试“>>后缀(cellfun(@isempty,postfix))={”};>>Y=重塑([postfix{:}],大小(postfix));但重塑会带来错误。