our $pre;
my $prefix;
my $match = $str =~ m{^.{$pos}
(?{local $pre = ''})
(
(?<=
(?= \D | ^ | (?1))
(.)
(?{my $m2 = $2; $pre .= $m2 if $m2 =~ m{\d}})
)
(?{$prefix = $pre})
)
(\d+)}x;
my $suffix = $3;
say $match ? $prefix . $suffix : '';
####
my $match = $str =~ m{^.{$pos}
(?{local $pre = ''})
\d
(
(?<=
(?= \D | ^ | (?1))
(?: \D | (\d))
(?{$pre .= $2 if defined $2})
)
(?{$prefix = $pre})
)
(\d*)}x;
####
my ($start, $end);
my $res = $str =~ m{
^.{$pos}
\d
(
(?<=
(?= (?: \D | ^ ) (?{$start = pos}) | (?1))
.
)
)
(\d*)(?{$end = pos})
}x ? substr($str, $start, $end - $start) : undef ;