0

次の行の最後のチャンクを解析しようとしています:

77      0       wl1271/wpa_supplicant_lib/driver_ti.h

残念ながら、スペースは常に同じ長さではありません。printf などを使用してデータを出力したため、列に並んでいると思います。これは、スペースがあったり、タブ文字があったりすることを意味します。

perl で正規表現を使用して、最初の 2 つの数字を取得することに成功しました。私が最後のビットを取得すると思った方法は、空白文字の最後の出現を検索し、そこから始まる文字列の残りを取得することです。使用しrindexてみましたが、検索可能なパラメーターの文字のみを受け入れ、正規表現は受け入れません(それでうまくいくと\s思いました)。

最後の空白文字を取得する方法を説明するか、その文字列を他の方法で取得するための解決策を手伝って、私がここで抱えている問題を解決できる人はいますか?

4

2 に答える 2

4

なぜsplitですか?

use strict;
use warnings;

my $string = '77      0       wl1271/wpa_supplicant_lib/driver_ti.h';
my ( $num1, $num2, $lastPart ) = split ' ', $string;

print "$num1\n$num2\n$lastPart";

出力:

77
0
wl1271/wpa_supplicant_lib/driver_ti.h
于 2013-02-15T03:42:35.017 に答える
2

\S+$正規表現、つまり文字列内の空白以外の文字の最後のセットと一致しないのはなぜですか?

  • \S=空白以外の文字
  • $=行の終わり

編集:splitケノーシスが示唆しているように、実際に使用する必要があります。

于 2013-02-15T03:25:38.327 に答える