String Matlab:如何从字符串中删除前缀
问题:在TrajCompact中,我使用regexp查找所有前缀和前缀后的值,代码如下: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 我只需要匹配的后缀,如何从匹配中删除前缀?方法使用正则表达式 您可以将*部分放在一个组中,方法是将其括在括号中(
[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');
然后:
组
将保存您要查找的内容
黑客方法
由于前缀始终为两位数,因此您也可以从匹配的第三个字符开始提取所有内容:
my_string = match(3:end);
其他评论
通过将^
添加到正则表达式的开头,可以要求前缀出现在字符串的开头。例如,排队:
[match, group] = regexp('25blah',sprintf('^%d%d(.*)',2,5),'match','once','tokens');
实际上,您当前的正则表达式将匹配字符串,如
zzzzz25stuff
。我不确定您是否希望这样做(假设它可以出现在您的数据中)。我的代码中的“组”是一个包含许多空数组的单元格数组:如何将其转换为矩阵?我尝试“>>后缀(cellfun(@isempty,postfix))={”};>>Y=重塑([postfix{:}],大小(postfix));但重塑会带来错误。