2014-04-28 77 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 –