1

Perl の Expect モジュールを使用して端末ベースのアプリケーションを自動化するシナリオがあります。以下に示すように、expect コマンドの引数として正規表現を渡しています。

$ssh->expect(20, '-re',
    'Dev:(\d+)\W*Bdaddr:((?:[[:xdigit:]]{2}:){5}[[:xdigit:]]{2})\W*Name:' );

したがって、使用を期待する文字列バッファー内のパターンの複数の出現に対して、同じ正規表現検索を行いたいと考えています。どうすれば達成できますか。また、それらの複数の発生をキャプチャする方法を知りたいです。

4

1 に答える 1

3

これが役立つかどうかを確認してください。

use Expect;

my $Obj = Expect->new();

$Obj->spawn("/some/tst.bash");

$Obj->expect(undef,
    [ qr/(?:.*?Hello){2}/i, sub {
            my $Self = shift;
            print "Matched qr/.*?Hello.*?Hello/i..\n";
            exp_continue; }
    ]
);

そして、/some/tst.bashは次のようになります。

echo "Hello! This is for testing. !Hello"

基本的に、正規表現(?:.*?Hello){2}は、Hello が 2 回続くもの/何も検索しません。したがって、本質的には、次もHelloHelloと一致します。

于 2012-04-26T14:19:38.367 に答える