Это на самом деле не та проблема, которая в идеале решается с помощью подхода с одним регулярным выражением - язык регулярных выражений просто не особенно означает для него .Предполагая, что вы пишете код на реальном языке (а не какое-то непродуманное встроенное использование регулярных выражений), вы могли бы сделать это (примеры на perl)
# Capture all the digits into an array
my @digits = $str =~ /(\d)/g;
# Then take the first five and put them back into a string
my $first_five_digits = join "", @digits[0..4];
или
# Copy the string, removing all non-digits
(my $digits = $str) =~ tr/0-9//cd;
# And cut off all but the first five
$first_five_digits = substr $digits, 0, 5;
Если по какой-то причине вы действительно застряли, делая одно совпадение, и у вас есть доступ к буферам захвата и способ их объединения, то предложение wdebeaum работает просто отлично, но мне трудно представить себе ситуацию, когда вы можетеделать все это, но не иметь доступа к другим языковым возможностям:)