当变量带有下划线时,在Matlab中使用regexp进行解析
我有一个如下形式的字符当变量带有下划线时,在Matlab中使用regexp进行解析,regex,matlab,Regex,Matlab,我有一个如下形式的字符单元格数组: ... \"_date\":\"1462455000\",\"_amount\":\"0.57\",\"_amount_currency\":\"USD\",\"_payable_date\":\"1463059800\" ... 我尝试使用以下表达式解析这些值: dates = regexp(rawDividends, '(?<="_date\\":\\")[0-9.]*?(?=\\)', 'match', 'once'); amounts =
单元格数组
:
...
\"_date\":\"1462455000\",\"_amount\":\"0.57\",\"_amount_currency\":\"USD\",\"_payable_date\":\"1463059800\"
...
我尝试使用以下表达式解析这些值:
dates = regexp(rawDividends, '(?<="_date\\":\\")[0-9.]*?(?=\\)', 'match', 'once');
amounts = regexp(rawDividends, '(?<=amount\\":\\")[0-9.]*?(?=\\)', 'match', 'once');
dcurrency = regexp(rawDividends, '(?<=_amount_currency\\":\\")[0-9.]*?(?=\\)', 'match', 'once');
dpayabledate = regexp(rawDividends, '(?<=_payable_date\\":\\")[0-9.]*?(?=\\)', 'match', 'once');
dates=regexp(raw),(?我怀疑这是因为您的正则表达式正在寻找[0-9.]*
而不是[A-Z]*
dcurrency = regexp(rawDividends, '(?<=_amount_currency\\":\\")[A-Z]*?(?=\\)', 'match', 'once');
dcurrency=regexp(rawdirements),(?您可能会从16b中引入的extractBetween中受益
dates = extractBetween(rawDividends,'_date\":\"','\');
amounts = extractBetween(rawDividends,'_amount\":\"','\');
它可能更快。它肯定比regexp容易一点
编辑:做了一些性能分析,因为我很好奇
function profFunc
rawDividends = '\"_date\":\"1462455000\",\"_amount\":\"0.57\",\"_amount_currency\":\"USD\",\"_payable_date\":\"1463059800\"';
rawDividends = repmat({rawDividends},1000,1);
n = 1E3;
tic
for i = 1:n
dates = regexp(rawDividends, '(?<="_date\\":\\")[0-9.]*?(?=\\)', 'match', 'once');
end
toc
tic
for i = 1:n
dates = extractBetween(rawDividends,'"_date\":\"','\');
end
toc
rawDividends = string(rawDividends);
tic
for i = 1:n
dates = extractBetween(rawDividends,'"_date\":\"','\');
end
toc
end
>> profFunc
Elapsed time is 1.533854 seconds.
Elapsed time is 0.710215 seconds.
Elapsed time is 0.326965 seconds.
函数profFunc
未分配股息=“\”\“\”日期\“:\”1462455000\”,“\”金额\“:”0.57\”,“\”金额\货币\“:”美元\“,“\”应付日期\“:”1463059800\”;
rawdirements=repmat({rawdirements},1000,1);
n=1E3;
抽搐
对于i=1:n
dates=regexp(rawdirements),(?请参阅。此外,如何将USD
与[0-9.]
模式匹配?使用那些lookahead没有任何意义:使用贪婪的量词并删除所有lookahead。很棒的东西!谢谢