На любом языке, который поддерживает именованные группы захвата , вы можете просто использовать их для того, что хотите захватить, и игнорировать пронумерованные.
my $string = q(Available from v5.10 in Perl.);
$string =~ /([A-Z].+?)(?<v>[0-9.]+)\s+(.*?)\./;
say "Version: $+{v}";
После регулярного выражения захват доступенв %+
хэше, внутри регулярного выражения в \k<name>
или \g{name}
.
Недостатком является то, что вы все еще захватываете все эти другие вещи (что немного вредит эффективности), в то время как преимущество заключается в том, что вы все ещезахватить все эти другие вещи (что помогает гибкости, если некоторые из них превращаются необходимыми).