perl regex忽略特定的关键字

时间:2015-03-30 21:39:43

标签: regex linux perl

我有以下输出:

22.0 MiB +  27.1 MiB =  49.2 MiB       process1
78.9 MiB + 636.5 KiB =  79.5 MiB       process2

我需要最后一栏,所以我使用以下正则表达式,我将(XX MiB值和processX分为两组$ 1和$ 2)

/([^=]+)\s([a-z].*)/

结果:

49.2 MiB
79.5 MiB

我想在正则表达式组中忽略/删除MiB如何删除它?

4 个答案:

答案 0 :(得分:1)

你可以使用,

=\s*(\d+\.\d+)\s*\w+\s*(\w+)

Working demo

答案 1 :(得分:0)

只是不要捕捉你不想留下的东西:

#!/usr/bin/perl
use warnings;
use strict;

while (<DATA>) {
    /= \s* ([0-9.]+) \s MiB/x and print $1, "\n";
}

__DATA__
22.0 MiB +  27.1 MiB =  49.2 MiB       process1
78.9 MiB + 636.5 KiB =  79.5 MiB       process2

答案 2 :(得分:0)

试试这个:

if ( $_ =~  /(=\s+)(.*[\d\.]+)/ ) {
      print "$2\n";
  }; 

答案 3 :(得分:0)

 m{ = ([0-9]+ (?: [.][0-9]+)? ) \s+ \S+ \s+ (\S+) }x