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

Langage Java Discussion :

Validation d'un string à partir d'un Pattern - Expression regulière


Sujet :

Langage Java

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    173
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 173
    Points : 151
    Points
    151
    Par défaut Validation d'un string à partir d'un Pattern - Expression regulière
    Je devrai vérifier qu'un string respecte certaine regle de nommage:

    La chaine

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    String tst = "03476_20100912T250505.145Z_abcdedfg_V01.xml";
    Quelques explications:

    La chaine doit commencer par 03476, 03477 ou 03478.

    Puis "_20100912T250505.145Z_" doit correspondre à une date de la forme "_YYYYMMDDTHH:mmSS.msZ_".
    La chaine de caractère "abcdedfg" doit figurer dans le meme emplacement.

    Puis _Vnn : nn correspond à un numéro de version sur 2 digit

    et enfin l'extention xml.

    Est que quelqu'un pourra m'aider construire ce pattern.

    Merci d'avance

  2. #2
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,


    Tu as presque tout défini. Il suffit de "traduire" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
        Pattern pattern = Pattern.compile(
            "(0347[678])"        // 03476, 03477 ou 03478
            + "_"
            + "([0-9]{8}T[0-9]{6}\\.[0-9]{3}Z)"    // date
            + "_"
            + "abcdedfg"
            + "_"
            + "V([0-9]{2})"        // version
            + "\\.xml"             // extension
        );

    a++

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    173
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 173
    Points : 151
    Points
    151
    Par défaut
    Merci ca marche,

    Toutefois, comment etre plus précis notemment sur la partie de la date.
    Ce pattern
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "([0-9]{8}T[0-9]{6}\\.[0-9]{3}Z)"
    autorise à avoir un mois 53, une heure 84,...

    Comment on peut être plus précis?

    J'ai essayé des combinaison comme : [0-23] pour l'heure par exemple mais je ne suis pas sur que ca marche comme je veux

  4. #4
    Membre expérimenté Avatar de Ivelios
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2008
    Messages
    1 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 031
    Points : 1 540
    Points
    1 540
    Par défaut
    Je veux sursemant me tromper dans la syntaxe mais passons.

    Pour avoir un mois compris entre 01 et 12 :
    0[1-9] | 1[0-2] = de 01 à 09 OU de 10 à 12.
    Pour l'heure c'est pareil :
    [0-1][0-9] | 2[0-4]
    Parcontre pour les jours c'est bien plus difficile si tu veux faire 30 ou 31 et je ne te parle pas du 29 février
    Il était une fois [...] Et ils vécurent heureux et eurent beaucoup d'enfants!

  5. #5
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Si tu veux vérifier la date il faut la récupérer et la valider avec un SimpleDateFormat. Les Patterns ne peuvent vérifier que le format et non pas la valeur.

    a++

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    173
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 173
    Points : 151
    Points
    151
    Par défaut
    Merci, je vais passer via SimpleDateFormat.

Discussions similaires

  1. Génération d'un String à partir d'une expression régulière
    Par yang dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 06/03/2007, 14h21
  2. Réponses: 4
    Dernier message: 08/01/2007, 23h38
  3. Réponses: 7
    Dernier message: 21/02/2006, 11h42
  4. [SAX] Valider un flux XML à partir d'un schéma
    Par spidetra dans le forum Format d'échange (XML, JSON...)
    Réponses: 3
    Dernier message: 23/11/2005, 16h16
  5. [Info]Créer un tableau de String à partir d'autres String
    Par Nasky dans le forum Collection et Stream
    Réponses: 21
    Dernier message: 06/07/2005, 11h46

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