Chciałem napisać proste wyrażenie regularne, które będzie sprawdzało, czy ciąg znaków pasuje do np. photoIDa, gdzie ID moze być dowolną liczbą podaną przez użytkownika, a napis zawsze konczy sie jakas litera [a-z] (To i tylko to wiem jak zrobic -.-). Ja mam nazwy np. takie: plikIDa, plikIDb, plikIDc, gdzie ID podaje user. Teraz, jak z takich nazw wyłuskać tylko te z danym ID? (Gdzie ID moze sie jakby dynamicznie zmieniac, w zaleznosci od tego, co poda user). Dla kodu poniżej będzie to mniej więcej tak:

#include <QtGui/QApplication>
#include <QString>
#include <QDebug>
#include <QRegExp>
#include <iostream>
using namespace std;

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    int id;
    cout << "Podaj ID:\n";
    cin >> id;
    
    QString n1 = "plik1a";
    QString n2 = "plik11a";
    QString n3 = "plik123b";
    
    bool ok = false;
    
    QRegExp exp("[a-z]$");
    ok = exp.exactMatch(n1);
    
    cout << "Pierwsze : " << ok; 
    
    ok = exp.exactMatch(n2);
    
    cout << "Drugie: " << ok;
    
    ok = exp.exactMatch(n3);
    
    cout << "Trzecie: " << ok;
    

    return a.exec();
}

Tylko jak zapisac takie "dynamiczne" wyrazenie? (Dla kodu ponizej, jesli podamy ID == 1) tylko dla n1 powinno byc true ...