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
这些规则是:

  • [-1,1]之间有5个数字
  • 数字之间用“\u1”分隔
  • 小数点替换为“\u1”
  • 整数{-1,0,1}没有小数点
  • 如何使用正则表达式(最好是matlab)将字符串转换为向量? 我尝试了一些正则表达式,但在处理整数规则时遇到了困难。

    使用以下代码:

    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')”分割。是的,对不起,我必须照顾我的女儿,并且忽略了小数点分隔符是一个点的事实。我去掉了令人困惑的部分。