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

3列目の数値を抽出したいのですが、正規表現の正しい使い方がわかりません。

4

1 に答える 1

1

手元に MATLAB がないため、コードを提供できません。ただし、一般的には、文字列を一度に 1 行ずつ処理し、次の正規表現を使用します。

^\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 に答える