1

我有一个场景,我正在使用 perl 的 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 两次。所以本质上,以下内容也会匹配HelloHello

于 2012-04-26T14:19:38.367 回答