Matlab:提取包括小数和符号的数字

时间:2012-07-09 23:20:02

标签: regex matlab

我在matlab中有一个字符串,如下所示:

str =

    Z   1   -355.66338432    1
    Z   2      1.38339828     412    
    Z   3      9.00000000     412    
    Z   4    -10.27835665     312 22 - 1
    Z   5      3.00000000     612 2   2
    Z   6      6.53259554     612 2   2
    Z   7      5.00000000     812 33 - 2   
    Z   8      0.19040409     812 33 - 2   
    Z   9      2.00000000     812 3   3
    Z  10     -1.00534284     812 3   3
    Z  11      7.27727717     512 64 - 62  1

我想在第三列中提取数字,但我似乎无法弄清楚regexp的正确用法。

1 个答案:

答案 0 :(得分:1)

我没有MATLAB方便,所以我无法提供代码。但一般情况下:一次遍历字符串一行,然后使用正则表达式:

^\s*Z\s*\d+\s*(-?\d+\.\d+).*$

这会将数字捕获为第一个捕获组\1。正则表达式扩展为:

^                  Start of line
\s*Z\s*            First column - whitespace, literal `Z`, whitespace
\d+\s*a            Second column - integer number, whitespace
(-?\d+\.\d+)       Third column - a (possibly negative) decimal number.
.*                 Anything
$                  End of line

Regexr上查看它。


或者,使用实际用于此工作的工具:textscan()。 (Mathworks documentation。)