У меня есть такая строка:
/dev/sda1 23G 46G 47G 22%
И хотите сопоставить только целое число в 47
место.
Я попытался изменить пример "совпадения второго набора чисел" (т. Е.\d+[^\d*](\d+)
) здесь, чтобы он соответствовал третьему набору (например, http://perlmeme.org/faqs/regexp/regexp.html, но я не могу найти совпадение.
Любая идея, как сопоставить только целое число в 47
место?
Вот подробный пример:
$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";
^\S+\s+\S+\s+\S+\s+(\d+)
подействовал бы, но я бы рекомендовал вместо этого разбить на пробелы и взять четвертую группу.