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

Collection et Stream Java Discussion :

[Regex] Vérifier qu'une chaîne respecte une expression régulière


Sujet :

Collection et Stream Java

  1. #1
    Membre du Club
    Inscrit en
    Avril 2003
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 80
    Points : 68
    Points
    68
    Par défaut [Regex] Vérifier qu'une chaîne respecte une expression régulière
    Bonjour,

    Je cherche un moyen de vérifier qu'une chaîne correspond exactement à un pattern défini dans une expression régulière.

    J'ai essayé regexp mais ca ne vérifie que la présence d'une sous chaine.
    En gros si je lui demande de me dire si la chaine :

    "abc" respecte le pattern [ab], il me dit 'oui', alors que pour moi, il faudrait qu'il dise 'non' car il ya un c qui ne correspond pas.

    Si quelqu'un a une solution a me proposer
    JSP, Servlets, Struts, EJB, Hibernate, XDoclet, Torque, WebServices ...
    Env. WebSphere, Tomcat, JBoss

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 18
    Points : 12
    Points
    12
    Par défaut
    Bonjour PeteMitchell,

    Pour trouver une chaine de caractère précise dans un texte par exemple, tu peux faire la fonction suivante :

    écrit un fichier regex.txt contenant à la première ligne la chaine de caractère ab, puis tu peux coder comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    private static void initResources() {
           try {
               br = new BufferedReader(new FileReader("regex.txt"));
           }
           catch (FileNotFoundException fnfe) {
                System.out.println("Cannot locate input file! "+fnfe.getMessage());
                System.exit(0);
            }
           try {
               REGEX = "abc";
               INPUT = br.readLine();
           } catch (IOException ioe) {}
     
            pattern = Pattern.compile(REGEX);
            matcher = pattern.matcher(INPUT);
     
            System.out.println("Current REGEX is: "+REGEX);
            System.out.println("Current INPUT is: "+INPUT);
        }
     
        private static void processTest() {
            while(matcher.find()) {
                System.out.println("I found the text \"" + matcher.group() +
                                   "\" starting at index " + matcher.start() +
                                   " and ending at index " + matcher.end() + ".");
                found = true;
            }
     
            if(!found){
                System.out.println("No match found.");
            }
        }
    Normalement pas de soucis, il te dira que "abc" n'existe pas dans la chaine de caractère "ab".
    Adapte cet exemple à ce que tu veux vraiment faire, il est évident que tu n'as pas besoin de passer par un fichier.

    --------------------------------
    Gexti

  3. #3
    Membre du Club
    Inscrit en
    Avril 2003
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 80
    Points : 68
    Points
    68
    Par défaut
    De quelle librairie ai-je besoin pour utiliser tes variables ?
    JSP, Servlets, Struts, EJB, Hibernate, XDoclet, Torque, WebServices ...
    Env. WebSphere, Tomcat, JBoss

  4. #4
    Membre régulier Avatar de calypso
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 102
    Points : 100
    Points
    100
    Par défaut
    je ne sais pas si ca peut t aider mais en langage regexp, ^ correspond a un debut de chaine, et $ a la fin

    donc, dans ce cas "abc" ne matchera pas "^ab$"

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 18
    Points : 12
    Points
    12
    Par défaut
    java.util.regex.Pattern

    je crois que c'est tout...

    ----------------------------
    Gexti

  6. #6
    Membre du Club
    Inscrit en
    Avril 2003
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 80
    Points : 68
    Points
    68
    Par défaut
    C'est bête, j'ai que java 1.3.10 donc impossible d'utiliser ton code qui est du java 1.4.x ...
    JSP, Servlets, Struts, EJB, Hibernate, XDoclet, Torque, WebServices ...
    Env. WebSphere, Tomcat, JBoss

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 18
    Points : 12
    Points
    12
    Par défaut
    Ha c'est sur, c'est moins facile.... lol
    Ben change pour la version supérieure !!!

    ---------------------------------------
    Gexti

  8. #8
    Membre du Club
    Inscrit en
    Avril 2003
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 80
    Points : 68
    Points
    68
    Par défaut
    Finalement, en mettant ça, on obtient ce qui est necessaire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
       RE r = new RE("^[:alnum:]*$");
       // Compile expression
       boolean matched = r.match("toto#");   // Renvoie false
       boolean matched = r.match("toto123");   // Renvoie vrai
    Merci à tous
    JSP, Servlets, Struts, EJB, Hibernate, XDoclet, Torque, WebServices ...
    Env. WebSphere, Tomcat, JBoss

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

Discussions similaires

  1. [regexp] Remplacer une chaîne par une chaîne aléatoire
    Par endreillie dans le forum Langage
    Réponses: 9
    Dernier message: 28/10/2010, 12h15
  2. Extraire une chaîne d'une chaîne
    Par Invité dans le forum VB.NET
    Réponses: 20
    Dernier message: 10/01/2008, 17h23
  3. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48
  4. Trouver la position d'une chaîne dans une chaîne
    Par taka10 dans le forum Langage
    Réponses: 1
    Dernier message: 03/01/2007, 23h18
  5. Réponses: 4
    Dernier message: 11/08/2006, 13h47

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