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 :

Problème sur les expressions régulières


Sujet :

Collection et Stream Java

  1. #1
    Membre chevronné
    Profil pro
    Enseignant
    Inscrit en
    Avril 2004
    Messages
    440
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2004
    Messages : 440
    Par défaut Problème sur les expressions régulières
    Bonjour, j'ai un souci dans l'utilisation d'une expression régulière où le résultat n'est pas ce que j'attends :

    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
    34
    35
    36
    37
    38
    39
     
    	private ArrayList<File> chercherFichiersXmlAmap(String repertoireString)
    	{
    		ArrayList<File> fichiersXML = new ArrayList<File>();
     
    		File repertoire = new File(repertoireString);
            if ( repertoire.isDirectory( ) ) 
            {
                File[] list = repertoire.listFiles();
                if (list != null){
                    for ( int i = 0; i < list.length; i++) 
                    {
                    	System.out.println(list[i].toString());
                    	if(checkXmlAmapFormat(list[i]))
                    	{
                    		fichiersXML.add(list[i]);
                    		System.out.println("oui");
                    	}
                    	else
                    		System.out.println("non");
                    } 
                } else {
                	System.err.println(repertoire + " : Erreur de lecture.");
                	return null;
                }
            } 
     
    		return fichiersXML;
    	}
     
    	private boolean checkXmlAmapFormat(File file) 
    	{
    		String fichier = file.getName();
     
    		if(fichier.endsWith(".xml") && fichier.matches("^amap+_+[1-31]+_+[1-12]+_+[2000-2100]+.+xml"))
    		return true;
     
    		return false;
    	}
    J'obtiens ceci :
    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
    .\saves\Test.xml
    non
    .\saves\Exercice1.xml
    non
    .\saves\Exercice2.xml
    non
    .\saves\mails_google.csv
    non
    .\saves\Result.xml
    non
    .\saves\amap_29_11_2011.xml
    non
    .\saves\amap_3_9_2029.xml
    non
    .\saves\amap_1_11_2010.xml
    oui
    En fait je ne comprends pas pourquoi amap_29_11_2011.xml et amap_3_9_2029.xml ne fonctionnent pas....

    Ca doit venir de mon utilisation de l'expression régulière, mais je ne vois pas...

    Merci,
    Mathieu.

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 252
    Par défaut
    Tu ne cesses d'ajouter des + après chaque sous-expression. C'est normal ?

    Ensuite, tu demande d'avoir des nombres entre 1 et 12 (par exemple) ; une expression rationnelle ne te permet pas de le faire de manière aussi simple.

    Exemple [1-12] signifie un caractère compris entre 1 et 1 ou alors 2. Donc en fait, cela ne sera correct que pour 1 ou 2, mais pas pour 3, 4, ... 9 ni pour 10, 11 et 12.

    Pour trouver un nombre entre 1 et 12, il faut faire ceci : ([1-9]|1[0-2]).

    À mon avis, tu devrais revoir les bases des expressions rationnelles.


    Enfin, pour corriger ton expression, voici ce qu'il faut faire :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "^amap_([1-9]|[12][0-9]|3[01])_([1-9]|1[0-2])_2(0[0-9]{2}|100)\\.xml$"

  3. #3
    Membre chevronné
    Profil pro
    Enseignant
    Inscrit en
    Avril 2004
    Messages
    440
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2004
    Messages : 440
    Par défaut
    Bonjour,

    Merci pour l'info !
    C'est vrai que je n'y connais rien aux expressions régulières, mais pour le peu que j'en avais besoin, je pensais que mon petit code marcherait... La preuve que non.

    Merci encore.

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

Discussions similaires

  1. Problème sur les expressions régulières
    Par Yonito dans le forum Débuter avec Java
    Réponses: 5
    Dernier message: 20/06/2014, 17h40
  2. Question sur les expressions régulières
    Par espadon1 dans le forum Langage
    Réponses: 2
    Dernier message: 05/07/2006, 08h59
  3. [VB.net][vs2005] Problème avec les expressions régulières
    Par zouhib dans le forum Windows Forms
    Réponses: 13
    Dernier message: 22/06/2006, 15h56
  4. Problème avec les expressions régulières
    Par Premium dans le forum Collection et Stream
    Réponses: 11
    Dernier message: 18/06/2006, 16h41
  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