Regex 使用正则表达式将数字字符串解析为数字向量
我有一组数字字符串(用于文件名),我想将其解析为向量 这里有一个例子Regex 使用正则表达式将数字字符串解析为数字向量,regex,matlab,parsing,Regex,Matlab,Parsing,我有一组数字字符串(用于文件名),我想将其解析为向量 这里有一个例子 -0_01_-1_0_23_0_52_-0_25 应该解析成什么 -0.01 -1 0.23 0.52 -0.25 这些规则是: [-1,1]之间有5个数字 数字之间用“\u1”分隔 小数点替换为“\u1” 整数{-1,0,1}没有小数点 如何使用正则表达式(最好是matlab)将字符串转换为向量? 我尝试了一些正则表达式,但在处理整数规则时遇到了困难。使用以下代码: a = '-0_01_-1_0_23_0_52_-0_
-0_01_-1_0_23_0_52_-0_25
应该解析成什么
-0.01 -1 0.23 0.52 -0.25
这些规则是:
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,
,然后使用正则表达式仅匹配数字
正则表达式匹配一个可选的
-
,然后是1+位,然后是一个可选的带有、
和1+位的子字符串 你最好的选择可能是用0.
替换0.
,然后用空格替换所有剩余的.
。你的答案就快到了。我正在用我的fixesAlso编辑,不确定你在中的意思:“或者用:res=regexp(a,,,'split')res=strsplit(a,,'u')”分割。是的,对不起,我必须照顾我的女儿,并且忽略了小数点分隔符是一个点的事实。我去掉了令人困惑的部分。