0

我在 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

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

4

1 回答 1

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 文档。)

于 2012-07-10T01:53:21.937 回答