繁体   English   中英

Perl正则表达式忽略特定的关键字

[英]perl regex ignore specific keywords

我有以下输出:

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 ,我该如何删除?

您可以使用,

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

工作演示

只是不要捕获您不想保留的内容:

#!/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

尝试这个 :

if ( $_ =~  /(=\s+)(.*[\d\.]+)/ ) {
      print "$2\n";
  }; 
 m{ = ([0-9]+ (?: [.][0-9]+)? ) \s+ \S+ \s+ (\S+) }x

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM