正则表达式来解析命令输出

时间:2015-02-24 02:42:50

标签: regex perl

我创建了一个解析命令输出的函数。

命令的输出如下:

 Host-profile-count   User       114 

(注意:数字114不是常数。可以是任何正数> = 0)

现在我只需要返回数字(在本例中为114)。 我想我的脚本中的正则表达式是错误的。当我运行脚本时,我得到输出为0.它应该是114。 有人可以帮我解决正则表达式吗?

sub _count {

   my ($self) = @_;
   my  $cmd   = 'command goes here ';
   my  $profiles = 0;

   $self->execute($cmd);

  foreach my $line ( @{ $self->get_stdout() } ) {
       if ( $line =~ m/Host\sprofile\scount\s+\S*\s+(\S*)/msx ) {
            $profiles = $1;
        }
    }

    $profiles =~ s/^\s+|\s+$//msxg;
    return $profiles;
}

1 个答案:

答案 0 :(得分:0)

是的,你笨拙地放置\s匹配任何空格字符)而不是连字符。

m/Host-profile-count\s+\S*\s+(\S*)/msx

DEMO

如果需要,在\b之前添加单词边界Host,在单词字符和非单词字符之间匹配)。