0

私の Perl プログラムでは、削除する配列に次の変数があります。

$array[0] = "--_000_41DADE848657754488503BD616F1ADE607250A88abmail2k7adventure_--";
$array[1] = "--_000_41DADE848657754488503BD616F1ADE607317EE6abmail2k7adventure_";
$array[2] = "--_000_41DADE848657754488503BD616F1ADE6073C5F3Babmail2k7adventure_--";

さまざまな入力データに対して、それに似たさまざまな要素を取得します。単一の正規表現を使用してそれらを削除するにはどうすればよいですか? 私は正規表現の初心者です。次のことを試しましたが、期待どおりに動作しません。

$array =~ s/--_000_ .* adventure_--//g;
4

3 に答える 3

2

リストから特定のタイプの要素を削除する場合は、次を使用できますgrep

my @new = grep !/^--_000_ .* adventure_--/, @array;
于 2012-07-10T18:50:02.603 に答える
1

そのパターンに一致するすべての要素を削除したいと思いますか?

これを行う簡単な方法は他にもありますが、おそらく最も簡単に理解できるのは、古い配列を空にして新しい配列を作成することです。ループを使用します。

my @newarray= ();
while ($elem = shift @array) {
    push @newarray, $elem if ($elem !~ /^--_000_ .* adventure_--/);
}

またはgrepを使用:

my @newarray = grep !/^--_000_ .* adventure_--/, @array;
于 2012-07-10T18:53:03.077 に答える
0

うーん、これはばかげているように聞こえるかもしれません。しかし、次のパターンはうまくいきました!

$array=~ s/--_000_.*adventure_//g;

.* を囲むスペースを削除しました

于 2012-07-10T18:53:13.003 に答える