我有这个字符串:
/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+)
可以解决问题,但我建议按空格拆分并取第四组。