正则表达式-匹配字符前的第三个数字

正则表达式-匹配字符前的第三个数字

我有这个字符串:

/dev/sda1      23G   46G  47G  22%

并且只想匹配47位置上的整数。

我尝试修改此处的“匹配第二组数字”示例(即\d+[^\d*](\d+)),使其与第三组数字匹配(例如,http://perlmeme.org/faqs/regexp/regexp.html,但我无法找到匹配项。

知道如何匹配47位置上的整数吗?

答案1

以下是一个详细的例子:

$string = '/dev/sda1      23G   46G  47G  22%';

my ( $number ) = $string =~ m|^/[\S]+/[\S]+\s+\d+\w\s+\d+\w\s+(\d+)|;

print $number;

或者如果你想要看到正则表达式更加分散:

my $string = '/dev/sda1      23G   46G  47G  22%';

my ( $number ) = $string =~ m|
        ^/[\S]+/[\S]+\s+    # drive
        \d+\w\s+        # first number - ignored
        \d+\w\s+        # second number - ignored
        (\d+)           # third number - CAPTURED
    |x;

print "$number\n";

答案2

^\S+\s+\S+\s+\S+\s+(\d+)可以解决问题,但我建议按空格拆分并取第四组。

相关内容