IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Qt Discussion :

Expression régulière avec des slashs


Sujet :

Qt

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 111
    Points : 52
    Points
    52
    Par défaut Expression régulière avec des slashs
    Bonjour,

    J'ai un string de la sorte :
    Et j'aimerais récupérer les valeurs entre chaque slashs dans des variables :

    Mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    QRegExp qrx;
    QString str = "53/16/1/358/10";
        QString FF, MF, TF, JF, PF ;
        qrx.setPattern("^([^]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)$"); // Ne marche pas, je dois oublier quelquchose
        if (qrx.indexIn(str) != -1) {
            FF = qrx.cap(1);
            MF = qrx.cap(2);
            TF = qrx.cap(3);
            JF = qrx.cap(4);
            PF = qrx.cap(5);
        }
    Quelqu'un aurait une idée pour le pattern?

  2. #2
    Membre expérimenté

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2009
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2009
    Messages : 1 009
    Points : 1 738
    Points
    1 738
    Par défaut
    Bonsoir,
    Pourquoi utiliser les expressions régulières pour ça ? Que c'est compliqué !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    QString str = "53/16/1/358/10";
    QString FF, MF, TF, JF, PF;
    QStringList valList = str.split('/');
    if (valList.count() == 5) {
        FF = valList.at(0);
        MF = valList.at(1);
        TF = valList.at(2);
        JF = valList.at(3);
        PF = valList.at(4);
    }

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 111
    Points : 52
    Points
    52
    Par défaut
    Parcequ'en fait la j'ai mis un exemple simple mais normalement ce n'est pas juste un string mais un fichier complet composé de plusieurs blocs de cette forme :

    TST1 52/15/0/000
    AUH SY KA 000001(0x01) TK 01(1) FK 10000(16) MK 110101(53) MKK 0101100110(358) MKL 00000000000010(2)
    SYSTEMINFO (3242 MHZ) details 1p68 92322
    Topaz: 1
    Askli: 1
    Je dois récupérer tout ce que j'ai mis en gras donc il m'a semblé que les RegEx étaient ce qu'il y avait de mieux, enfin je ne sais pas.
    Sinon votre méthode fonctionne bien mais sera t-elle adaptée dans mon cas (bien sûr après modification)?
    En tous cas, merci de votre réponse

  4. #4
    Membre expérimenté

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2009
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2009
    Messages : 1 009
    Points : 1 738
    Points
    1 738
    Par défaut
    A mon avis, les regexp sont faites pour valider (matcher), c'est à dire vérifier qu'une chaine respecte bien une règle précise. Par contre pour aller chercher des éléments comme dans ton fichier, je ferais ça à coups de readLine() et de split('...').at(n).

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 111
    Points : 52
    Points
    52
    Par défaut
    C'est noté ! Merci beaucoup je vais suivre votre exemple

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Expression régulière avec slash
    Par bernidupont dans le forum Général Java
    Réponses: 4
    Dernier message: 15/01/2014, 18h27
  2. Ecrivez vos expressions régulières avec des mots
    Par FirePrawn dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 06/08/2013, 14h31
  3. Réponses: 2
    Dernier message: 04/10/2010, 21h00
  4. Réponses: 4
    Dernier message: 24/05/2010, 13h15
  5. Expression régulière avec "|"
    Par YanK dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 16/07/2005, 15h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo