Wozu soll das ganze denn gut sein, erscheint mir in der jetzigen Form
sehr konstruiert.
Vielleicht gibt es auch eine Lösung ganz ohne RegExp z.B. mit
count_chars().
Wenn man viel mit Dateien unterschiedlichsten Ursprunges (damit verbunden: unterschiedlichste Dateinamen) zu tun hat, dann ist es recht nützlich, die Dateinamen in ein einheitliches Format zu bringen.
Beispiel:
Old.Enough.To.Know.Better.-.15.Years.Of.Merge.Records.(3CD).-.EAC.LAME(APX).by_FalloutBoy.zip
Dieser Dateiname ist das reinste Chaos. Mit ein paar Regex und ein wenig Algorithmierung kann dabei dies herauskommen:
Old_Enough_To_Know_Better_-_15_Years_Of_Merge_Records_[3_CDs,EAC,LAME,APX,by_FalloutBoy].zip
Dieses Format lässt sich einfach durch Scripte auswerten und somit die Arbeit sehr vereinfachen.
In diesem konkreten Fall hätte das [A-Z]{3} Muster bei "APX" und "EAC" gegriffen. Würde der Dateiname außerhalb der [] noch ein III (römische 3) enthalten, dann hätte womöglich der Algorithmus diese III auch in die [] gepackt und damit den Sinn des Dateinamens zerstört.
Zum Thema: Der Geistige Hohlraum hat die Lösung gefunden, die mir vorschwebte.
Gruß