使用regexp检测特定的数字
有没有关于如何检测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);使用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
秩(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') )