Matlab:如何从字符串

时间:2015-11-30 10:49:56

标签: 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

我只想要匹配的后缀,如何从匹配中删除前缀?

1 个答案:

答案 0 :(得分:4)

使用正则表达式的方法

您可以将.*部分放在一个组中,将其括在括号中(即(.*))。 Matlab有一些特殊的标记'对此的命名。在任何情况下,它是如何工作的一个例子:

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

然后:

  1. 匹配将是包含' 25blah'
  2. 的字符数组
  3. group将是包含字符串' blah'的1x1单元格数组。
  4. 也就是说,变量group将保留您正在寻找的内容。

    Hack方法

    由于你的前缀总是两位数,你也可以从比赛的第3个字符开始:

    my_string = match(3:end);
    

    其他评论

    您可能希望通过在正则表达式的开头添加^来要求在字符串的开头出现前缀。例如,制作一行:

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

    实际上,您当前的正则表达式将匹配zzzzzzzzz25stuff之类的字符串。我不确定你是否想要那个(假设它可能出现在你的数据中)。