QRegExp Versionsnummern Format

Alles rund um die Programmierung mit Qt
Antworten
TheBert
Beiträge: 21
Registriert: 1. September 2009 14:27

QRegExp Versionsnummern Format

Beitrag von TheBert »

Hallo,

ich versuche gerade mit QRegExp zu überprüfen ob das Format der Versionsnummer stimmt;

Das Format: ###.###.###.### (Majo - Minor - Revision - Build);

Ich habe folgendes versucht:

Code: Alles auswählen

QString version = "0.0.1.001"

                    QRegExp rx("[0-9]+"+QRegExp::escape(".")+"[0-9]+"+QRegExp::escape(".")+"[0-9]+"+QRegExp::escape(".")+"[0-9]+");
                    if(rx.exactMatch(version))
                        qDebug("match");
                    else
                        qDebug("no_match");
Aber es wird immer "no_match" ausgegeben. Ich bin mir sicher das mein regex string nicht passt, was hab ich da falsch gemacht?

Danke!

Mfg
phlox81
Beiträge: 97
Registriert: 7. Juli 2009 12:30
Kontaktdaten:

Beitrag von phlox81 »

Versuch mal "[0-9]+{3}(\.[0-9]+{3})+{3}"

Pseudo RegEx, aber die Idee sollte klar sein ;)
24dan
Beiträge: 274
Registriert: 26. Juni 2006 14:15
Wohnort: Hamburg

Beitrag von 24dan »

hier sonst eine Funktion die ich auch nur bekommen habe aber funktioniert um Versionsnummern zu vergleichen:

Code: Alles auswählen

//! Vergleicht zwei Versionsnummern des Typs X.X.X.X
/*!
\param programm QString mit der Versionsnummer des Programms
\param server QString mit der Versionsnummer auf dem Server
\return bool neue Version vorhanden
*/
bool UpdateSW::versionVergleichen(QString programm, QString server)
{
    QStringList numbers1 = programm.split('.');
    QVector<int> vnum1;
    bool ok;
    int i;
    foreach(QString str1, numbers1)
    {
       i = str1.toInt(&ok);
       if(ok)
          vnum1.push_back(i);
       else break;
    };
    QStringList numbers2 = server.split('.');
    QVector<int> vnum2;
    foreach(QString str2, numbers2)
    {
       i = str2.toInt(&ok);
       if(ok)
          vnum2.push_back(i);
       else break;
    }
    ok = false; // default kein Unterschied
    for(i = 0; i <= 3; i++)
    {
        // server größer als programm ?
        if(vnum2.at(i) > vnum1.at(i)) {
            ok = true; // server hat neuer Version
            i=3; // beenden
        }
    }
    return (ok);
}
:wink:
"Der erste Trunk aus dem Becher der Naturwissenschaften macht atheistisch, aber auf dem Grund des Bechers wartet Gott."
(W. Heisenberg)
neuschi
Beiträge: 78
Registriert: 23. Mai 2007 10:59

Re: QRegExp Versionsnummern Format

Beitrag von neuschi »

TheBert hat geschrieben: ich versuche gerade mit QRegExp zu überprüfen ob das Format der Versionsnummer stimmt;

Das Format: ###.###.###.### (Majo - Minor - Revision - Build);
Versuchs mal hiermit:

(\d{0,3})\.(\d{0,3})\.(\d{0,3})\.(\d{0,3})

\Ralf
Antworten