如何使用boost正则表达式来解析matlab范围?

时间:2012-03-22 09:08:02

标签: c++ regex matlab boost

我正在学习boost正则表达式,并希望用它来解析matlab中的常规向量格式。矢量形式(仅考虑1D数字格式)例如是

V = 1.0;    % correct form, without bracket, 1 element only
V = [1.0];  % correct form, with bracket, 1 element only
V = [1.0 2.0 3.0];  % correct form, with bracket, number separated by space, 3 elements
V = [1.0, 2.0, 3.0];  % correct form, with bracket, number separated by comma, 3 elements
V = [1.0; 2.0; 3.0];  % correct form, with bracket, number separated by ";", 3 elements
V = [1.0:-0.01:-0.3]; % correct form, with bracket, data given as a range with step -0.01

我的目的是,如果数字不是作为范围&步骤,只提取所有数据。如果数字是作为范围和&步骤,提取min,max和step。我一直在尝试多次,但似乎不是解析所有情况的语法的简单方法。我的困难是

  1. 实际上,数据可以被[]括起来,正则表达式如何表示?

  2. 因为数字可以用空格分隔“;”或“,”但混合它们是不合法的,即我们不能[1,2.0; 3 4]对于1D案例,但如何通过正则表达式检测到它?

  3. 无论如何要提取数字?该数字可以作为+或 - 符号加上前缀,并且可以是任何精度的任何长数,例如-0.3252323523423423232342或+1.2

  4. 对于最后一个表达式,如何从[1.0:-0.01:-0.3]中提取1.0,-0.01 -0.3?

  5. 我在想,如果让它成功的唯一方法是为一个案例写一个普通快递?有没有更好更好的方法来使用常规分析所有案例?感谢。

0 个答案:

没有答案