使用正则表达式将数字字符串解析为数字向量

时间:2016-12-01 16:07:17

标签: regex matlab parsing

我有一组数字字符串(用于文件名),我想将其解析为矢量

这是一个例子

-0_01_-1_0_23_0_52_-0_25

哪个应解析成

-0.01 -1 0.23 0.52 -0.25

规则是:

  1. [-1,1]
  2. 之间有5个数字
  3. 数字由' _'
  4. 分隔
  5. 小数点被' _'。
  6. 取代
  7. 整数{-1,0,1},不具有小数点
  8. 如何使用正则表达式(最好是matlab)将字符串转换为向量? 我尝试了一些正则表达式,但却遇到了处理整数规则的问题。

1 个答案:

答案 0 :(得分:2)

使用此代码:

a = '-0_01_-1_0_23_0_52_-0_25';
a = strrep(a, '0_', '0.');
res = regexp(a, '(-?[0-9]+(?:\.[0-9]+)?)','match');
res = cellfun(@str2num, res)

首先,将0_替换为0,,然后使用-?[0-9]+(?:,[0-9]+)?正则表达式仅匹配数字。

正则表达式匹配可选的-,然后匹配1+个数字,然后是,和1+个数字的可选子字符串。