问题:从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
我只想要匹配的后缀,如何从匹配中删除前缀?
答案 0 :(得分:4)
您可以将.*
部分放在一个组中,将其括在括号中(即(.*)
)。 Matlab有一些特殊的标记'对此的命名。在任何情况下,它是如何工作的一个例子:
[match, group] = regexp('25blah',sprintf('%d%d(.*)',2,5),'match','once','tokens');
然后:
也就是说,变量group
将保留您正在寻找的内容。
由于你的前缀总是两位数,你也可以从比赛的第3个字符开始:
my_string = match(3:end);
您可能希望通过在正则表达式的开头添加^
来要求在字符串的开头出现前缀。例如,制作一行:
[match, group] = regexp('25blah',sprintf('^%d%d(.*)',2,5),'match','once','tokens');
实际上,您当前的正则表达式将匹配zzzzzzzzz25stuff
之类的字符串。我不确定你是否想要那个(假设它可能出现在你的数据中)。