Mit geht es mit RegEx ähnlich. In diesem Fall würde ich ein String.Split verwenden.
Delphi-Quellcode:
var
SA: TArray<string> ;
Nr: string;
begin
...
SA := AFileName.Split(['_','-']);
if Length(SA) = 9 then
begin
Nr := SA[7];
...
end;
...
end;
Die RegEx Profis haben da möglicherweise eine besseren Vorschlag.