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

API standards et tierces Java Discussion :

Problème sur une simple expression régulière


Sujet :

API standards et tierces Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 200
    Points : 66
    Points
    66
    Par défaut Problème sur une simple expression régulière
    Bonjour la team,

    J'ai un test sur une expression régulière qui marchent en base mais pas dans mon code Java.

    Voici mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     boolean t1 = "66166".matches("^(..[1-9]|V)");
     boolean t2 = "66166".matches("^(..[2-9]|V)");
     
     boolean t3 = Pattern.matches("^(..[1-9]|V)", "66166");
     boolean t4 = Pattern.matches("^(..[2-9]|V)", "66166");
    Savez-vous pourquoi mes booléens t1 et t3 sont faux ?

    Merci de votre aide,
    Berni.

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 552
    Points : 21 608
    Points
    21 608
    Par défaut
    L'expression régulière accepte uniquement des suites de 3 caractères : n'importe lequel, n'importe lequel, et V ou un chiffre de 1 à 9.

    66166 fait 5 caractères, pas 3, et ne peut donc jamais être reconnu.

    J'ajoute que le ^ au début est inutile.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    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,


    En effet en Java matches() vérifie le format de la chaine dans sa totalité.

    Pour rechercher une sous-chaine il faut toucher à l'API Regex et appeler la méthode find() :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    	// Vérifie que la chaine correspond exactement au pattern :
    	boolean t1 = "66166".matches("^(..[1-9]|V)");
     
    	// Vérifie que la chaine contient le pattern
    	boolean t2 = Pattern.compile("^(..[1-9]|V)")
    				.matcher("66166").find();
    a++

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 200
    Points : 66
    Points
    66
    Par défaut
    En effet, Java interprète d'une manière différente (que mysql par ex) les pattern fournis.
    Il faut soit mettre le pattern dans son intégralité, soit comme le souligne adiGuba.

    Merci en tout cas.

    A bientôt,
    berni.

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

Discussions similaires

  1. [RegEx] Petit problème sur une simple expréssion
    Par mathias59 dans le forum Langage
    Réponses: 1
    Dernier message: 30/11/2010, 10h21
  2. Réponses: 1
    Dernier message: 14/07/2010, 17h38
  3. Problème sur une requête simple dans une table simple
    Par Muso tensei dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 26/04/2009, 12h28
  4. Problème sur une expression régulière
    Par GregLig dans le forum Langages de programmation
    Réponses: 2
    Dernier message: 22/12/2007, 13h34
  5. Problème sur une expression régulière
    Par Verbal-Quint dans le forum Langage
    Réponses: 6
    Dernier message: 12/11/2004, 10h54

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