2014-04-28 41 views
0

我如何得到年(4位)时提供的源代码,我只能检测当天(29)检测4位,但无法检测到今年(1997年)。我的正则表达式检查有问题。如何使用正则表达式

age = regexp(CharData,'(\d{1,4})','match','once') 

例如,

登记在 1997年3月29日

希望的输出:

错误输出:

for i = 1:2 

    data2=fopen(strcat('DATA\PRE-PROCESS_DATA\F22_TR\f22_TR_pdata_',int2str(i),''),'r') 
    CharData = fread(data2, '*char'); %read text file and store data in CharData 
    fclose(data2); 

    age = regexp(CharData,'(\d{4})','match','once') 

end 

文件:f22_TR_pdata_1 - >注册了 1997年6月24日

文件:f22_TR_pdata_2 - >注册了 1997年3月29日

年龄:1997年

回答

5

要只抢四位

age = regexp(CharData,'(\d{4})','match','once') 

d{1,4}手段寻找数字与123 1和4含义之间的长度,1294444都会匹配,因为它们的长度为1至4

d{4}说,给我的确切长度为4的数字。意思是,19972001,1800都将匹配。

+0

对上述版本有什么想法吗? – user3340270

+0

是的,我明白〜如果我有超过1个文件,那么我将如何将所有'年龄'存储为数组形式? – user3340270

+0

你应该问一个新的问题,因为它是不相关的。如果答案有助于解决问题,请接受它。检查http://stackoverflow.com/questions/14756497/push-a-variable-in-a-vector-in-matlab为一个向量和数组教程阅读http://www.tutorialspoint.com/matlab/matlab_arrays。 HTM –