2

科学形式の数値の文字列を扱っています。例えば

24  6.924E+06  8.316E-01  1.052E-01  1.622E+01  1.311E+01  0.000E+00  6.059E-06 (snip.. extends for a bit)

ここで、リストの i 番目の値を取得できるようにする perl の正規表現を書きたいと思います。だから私の現在のセットアップは次のとおりです

$_ =~ ^\s+\d+\s+(\d+[.]\d+E[+]\d+);
my $temp = $1;

これで最初の番号が得られます。本当に長い正規表現を書かなくても、必要に応じて 7 番目または 50 番目をキャプチャできるようにしたいと考えています。

これを行う簡潔な方法はありますか?

前もって感謝します。

4

3 に答える 3

6

使用するsplit

my @cols = split ' ', $_;

my $seventh = $cols[6];
my $fiftieth = $cols[49];
于 2014-07-18T21:21:11.873 に答える
2

この場合、分割が最適なオプションです。

my @val = split ' ', $_;
my $val7 = $val[6];
于 2014-07-19T07:38:54.447 に答える
0

3 番目の数値の例:

^\s+\d+(?:\s+(\d+\.\d+E[-+]?\d+)){3}

キャプチャ グループを繰り返すと、コンテンツは最後の一致で上書きされます。

注意: この場合、アラビア数字のみが必要なため、[0-9]代わりに使用する方がクリーンです。\d

于 2014-07-18T21:30:37.693 に答える