Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用regexp检测特定的数字_Regex_String_Matlab - Fatal编程技术网

使用regexp检测特定的数字

使用regexp检测特定的数字,regex,string,matlab,Regex,String,Matlab,有没有关于如何检测3英寸(>3号“,”匹配“);%检查 %在映像文件中启动仅写http fid=fopen(strcat(“数据\预处理数据\ F23\u TR\F23\u TR\u pdata”,int2str(i)),“w”); 对于col=1:numel(注册日期) fprintf(fid,'%s\n',寄存器日期{:,col}); 结束 fclose(fid); %在映像文件中结束仅写http s=dir(strcat('DATA\PRE-PROCESS_DATA\F23_TR\','F

有没有关于如何检测3英寸(>3号“,”匹配“);%检查 %在映像文件中启动仅写http fid=fopen(strcat(“数据\预处理数据\ F23\u TR\F23\u TR\u pdata”,int2str(i)),“w”); 对于col=1:numel(注册日期) fprintf(fid,'%s\n',寄存器日期{:,col}); 结束 fclose(fid); %在映像文件中结束仅写http s=dir(strcat('DATA\PRE-PROCESS_DATA\F23_TR\','F23_TR_pdata',int2str(i)); disp(s字节); 如果s.bytes~=0 数据7=fopen(strcat('DATA\PRE-PROCESS\u DATA\F23\u TR\F23\u TR\u pdata',int2str(i),'','r')) CharData7=fread(data7,“*char')”;%读取文本文件并将数据存储在CharData中 fclose(数据7);
秩(i)=str2double(regexp(CharData7),”>(\d)假设
CharData7
是一个单元格数组,您可以尝试以下方法:

%// The find 
%// - use 'tokens' to return just the part in brackets
%// - use \s* to make spacing flexible (which is also valid XML/HTML)
rank = regexp(CharData7, '>\s*(\d)\s*<', 'tokens', 'once');

%// Re-format into flat cells 
%// ('tokens' returns ALL tokens, which is therefore a cell, regardless
%// of the 'once' setting)
rank = [rank{:}];

%// and convert everything to double
rank(i) = str2double(rank)

您的
regexp(CharData7,”>(\d)3但是我得到的输出是“nan…”我无法得到像(3)这样的正确输出,我希望输出返回我的秩=[3]@user3340270:在我的测试中,这个结果是正确的,所以你的代码中有其他东西把事情搞砸了。你能给出一个你用来重现问题的字符串和循环的最小示例吗?@user3340270:还有,你的MATLAB版本是什么?嗨@Rody,我已经发布了我的问题的d部分,如上所述,我使用了MATLAB版本:MATLAB 7.7.0(R2008b)@user3340270:谢谢。你也可以发布一个你正在阅读的HTM文件的示例吗?我的.HTM/code文件太长了,但我从这个链接()保存。这是我保存下来的页面。
%function [feature7] = f7(data)

for i = 1:1

%start read html file
data2=fopen(strcat('DATA\WHOIS\TR\',int2str(i),'.htm'),'r')
CharData = fread(data2, '*char')';  %read text file and store data in CharData
fclose(data2);
%end read html file

register_date = regexp(CharData, '<span data-bind-   domain="rank_value_3_months">.*?/span>', 'match'); %checking

%start write only http in image file
fid = fopen(strcat('DATA\PRE-PROCESS_DATA\F23_TR\f23_TR_pdata_',int2str(i)),'w');
for col = 1:numel(register_date)
 fprintf(fid,'%s\n',register_date{:,col});
end
fclose(fid);
%end write only http in image file

s = dir(strcat('DATA\PRE-PROCESS_DATA\F23_TR\','f23_TR_pdata_', int2str(i)));
disp(s.bytes); 

if s.bytes ~= 0

   data7=fopen(strcat('DATA\PRE-PROCESS_DATA\F23_TR\f23_TR_pdata_',int2str(i),''),'r')

   CharData7 = fread(data7, '*char')';  %read text file and store data in CharData
   fclose(data7);

  rank(i) = str2double(regexp(CharData7,'>(\d)<','tokens','once') )

  else

  end

  if rank(i)~=0
   feature23(i)=-1;
  else
   feature23(i)=1;
  end
  end
%// The find 
%// - use 'tokens' to return just the part in brackets
%// - use \s* to make spacing flexible (which is also valid XML/HTML)
rank = regexp(CharData7, '>\s*(\d)\s*<', 'tokens', 'once');

%// Re-format into flat cells 
%// ('tokens' returns ALL tokens, which is therefore a cell, regardless
%// of the 'once' setting)
rank = [rank{:}];

%// and convert everything to double
rank(i) = str2double(rank)
rank(i) = str2double([builtin('_brace', regexp(C,'>\s*(\d)\s*<','tokens','once'), :)]);
 rank(i) = str2double( regexp(C,'>\s*(\d)\s*<','tokens','once') )