3

正規表現グループのこの行の最後の数字をキャプチャしようとしています:

入力:

9 Power_On_Hours 0x0032 099 099 000 Old_age 常に - 54654

私のパターン:

/Power_On_Hours.+Always\s.+([0-9]{1,5})/

「54654」をキャプチャすることができないようです.undefを返しています:(

4

7 に答える 7

4

frido が指摘したように、問題はあなたの last.+が貪欲 (デフォルトの動作) であり、それを に変更することで修正できること.+?です。

しかし、おそらく$行末に一致させるためにを使用するので、次のようにします。

/Power_On_Hours.+Always.+?(\d+)$/
于 2010-02-17T19:52:26.933 に答える
1

あなたの数字が常に最後である場合、

$string= q(9 Power_On_Hours          0x0032   099   099   000    Old_age   Always       -       54654);
@s = split /\s+/,$string;
print $s[-1]."\n";

そして、最後の桁が任意の長さにできる場合

/.+Power.+Always.+[^\d](\d+)$/;
于 2010-02-18T00:59:34.620 に答える
1

次のコードも使用できます。

use strict;
use warnings;

my $string= q(9 Power_On_Hours          0x0032   099   099   000    Old_age   Always       -       54654);
my @array = split /\s+/,$string;

print "$array[$#array]\n";
于 2010-03-01T11:54:55.837 に答える
0

行の最後の数字のグループですよね?

my ($digits) = $input =~ /(\d+)$/;

$記号は、1つ以上の数字のグループを文字列の最後に固定します(\d+)

于 2010-02-21T09:58:46.550 に答える