我有一组数字字符串(用于文件名),我想将其解析为矢量
这是一个例子
-0_01_-1_0_23_0_52_-0_25
哪个应解析成
-0.01 -1 0.23 0.52 -0.25
规则是:
如何使用正则表达式(最好是matlab)将字符串转换为向量? 我尝试了一些正则表达式,但却遇到了处理整数规则的问题。
答案 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+个数字的可选子字符串。