如何使用regexp检测4位数

use*_*270 0 matlab matlab-figure

给定源代码时如何获得年份(4位数),我只能检测到第29天,但无法检测到年份(1997年).我的正则表达式检查有问题.

age = regexp(CharData,'(\d{1,4})','match','once')
Run Code Online (Sandbox Code Playgroud)

例如,

1997年3月29日注册

期望的产出: 1997年

错误输出: 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
Run Code Online (Sandbox Code Playgroud)

file:f22_TR_pdata_1 - > 1997年6月24日注册

档案:f22_TR_pdata_2 - > 1997年3月29日注册

年龄: 1997年

Hit*_*eeb 5

只能抓四位数

age = regexp(CharData,'(\d{4})','match','once')
Run Code Online (Sandbox Code Playgroud)

这样做d{1,4} 的手段寻找与数字1和4含义之间的长度,1,29,123,4444将所有的比赛,因为它们的长度是1和4之间

d{4} 说,让我数与4含义,确切的长度1997,2001,1800将所有的比赛.