Regex 正则表达式在MATLAB中不工作
我没有在MATLAB中做任何正则表达式的工作,我不认为这是一个环境问题,但我不确定。我的任务是:Regex 正则表达式在MATLAB中不工作,regex,matlab,Regex,Matlab,我没有在MATLAB中做任何正则表达式的工作,我不认为这是一个环境问题,但我不确定。我的任务是: 从下载NASDQ股票数据 使用正则表达式提取所有股票符号 这是我创建的正则表达式:^[A-Z]\\\\\\([A-Z]+)\\\\\.+\\[A-Z]\\\[A-Z]\\\[A-Z]\\\\\\\[A-Z].\\\[A-Z]+$ 此表达式适用于此文件中的某些行,但不是所有行。例如,它非常适合这一行: -Y | AAPL |苹果公司-普通股| Q | Q | N | 100 | N | N | AAP
请帮忙……谢谢 您的文件似乎是一组以
|
分隔的列,第一行是列名
下面是一个直接创建结构数组的解决方案,该数组的字段名从列名中获取:
function [structArray] = ReadNasdaqTraded(filename)
%[
% For debug
if (nargin < 1), filename = 'nasdaqtraded.txt'; end
% Read full file content
text = fileread(filename);
% Split on newline
text = strsplit(strtrim(text), '\n');
header = text{1}; % Keep header
content = text(2:(end-1)); % Keep content
footer = text{end}; %#ok - We don't care about last line (file creation date)
% Build suitable field names
fieldNames = strsplit(header, '|');
fieldNames = strtrim(fieldNames); % Remove any
fieldNames = strrep(fieldNames, ' ', ''); % spaces (TODO: OR special characters)
% Reformat content into cell matrix
count = length(content);
columnCount = length(fieldNames);
cellArray = cell(count, columnCount);
for ri = 1:count,
cellArray(ri, :) = strsplit(content{ri}, '|', 'CollapseDelimiters', false); % Carefull not to collapse empty delimiters
end
% Create structure array from cell content
structArray = cell2struct(cellArray, fieldNames, 2);
%]
易于使用,无论您需要什么额外的处理…我认为您无法为股票符号创建合理的正则表达式,因为我认为这些符号在命名上没有特定的规则。换句话说,符号几乎可以是任何东西我只是看了一下文本文件。行的格式有太多变化,我认为您无法编写一个
regex
,以简洁地捕获您要查找的内容。您应该首先尝试拆分由|分隔的字段,然后处理各个字段。假设字段本身没有|,您应该能够使用strfind或simple==轻松完成此操作。谢谢,似乎这不是应该采取的方法,我发现了这一点,并且可以正确解析CSV文件。您是savior@citizensane
>> ReadNasdaqTraded('nasdaqtraded.txt')
ans =
8188x1 struct array with fields:
NasdaqTraded
Symbol
SecurityName
ListingExchange
MarketCategory
ETF
RoundLotSize
TestIssue
FinancialStatus
CQSSymbol
NASDAQSymbol