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 :

[String] Expression régulière


Sujet :

Collection et Stream Java

  1. #1
    Membre averti
    Inscrit en
    Novembre 2004
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 37
    Par défaut [String] Expression régulière
    Bonjour,

    Je suis entrain d'effectuer un travail sur les expression régulières en java et en recherchant de la documentation je suis tombé sur la notion de quantificateurs avides, réticents et possessifs. Malheureusement dans la doc que j'ai trouvé les explications ne sont pas supers claires ...

    Quelqu'un a-t-il un exemple d'utilisation des ces quantificateurs ou une petite définition à me donner ?

    MERCI !

  2. #2
    Expert éminent
    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
    Billets dans le blog
    1
    Par défaut
    Salut,


    Un exemple, avec la chaine "abaabaaabaaaab" :
    • Le quantificateur avide (avec le pattern ".*b) te retournera la plus grande chaine correspondante au pattern, soit "abaabaaabaaaab".
    • Le quantificateur réticent (avec le pattern ".*?b) te retournera au contraire la plus petite chaine, et donc tu obtiendras successivement les valeurs suivantes : "ab", "aab", "aaab" et "aaaab".


    Par contre je n'ai jamais saisi la particularité du quantificateur possessif...

    a++

  3. #3
    Membre averti
    Inscrit en
    Novembre 2004
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 37
    Par défaut
    ok merci je vais faire quelques tests .... y'a des chances que je revienne sur le forum ...

    a+ !!

  4. #4
    Membre averti
    Inscrit en
    Août 2005
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 22
    Par défaut
    j'ai ma formule suivante pour controler le format de la date :
    [0-9]{2}/[0-9]{2}/[0-9]{4}

    qui apparment ne marche po

  5. #5
    Expert éminent
    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
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par greatdonking
    qui apparment ne marche po
    C'est à dire ???

  6. #6
    Membre averti
    Inscrit en
    Août 2005
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 22
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Pattern p = Pattern.compile("[0-9]{2}/[0-9]{2}/[0-9]{4}");
    Matcher m = p.matcher("date");
    if(m.matches()){
        System.out.println(date);
    }
    Rien ne s'affiche ...

  7. #7
    Expert éminent
    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
    Billets dans le blog
    1
    Par défaut
    C'est normal car la chaine de caractères "date" ne correspond pas au pattern...

  8. #8
    Membre averti
    Inscrit en
    Août 2005
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 22
    Par défaut
    excuse moi pour l'erreur de recopiage !
    c'est bien une String date que je transmet en param :
    Matcher m = p.matcher(date);

    le probleme n'est donc pas réglé...

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    154
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 154
    Par défaut
    Tu pourrais donner un exemple de la valeur de date?
    Sinon, ce n'est pas évident de t'aider

    Au hasard, il ne faudrait pas échapper certains caratères (ca fait longtemps que j'ai pas fait de regexp je suis pas sur)

  10. #10
    Membre averti
    Inscrit en
    Août 2005
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 22
    Par défaut
    12/01/2006 par exemple

  11. #11
    Expert éminent
    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
    Billets dans le blog
    1
    Par défaut
    Salut,

    Perso chez moi ce code marche très bien et m'affiche la date :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
           String date = "12/01/2006";
           Pattern p = Pattern.compile("[0-9]{2}/[0-9]{2}/[0-9]{4}");
           Matcher m = p.matcher(date);
           if(m.matches()){
               System.out.println(date);
           }
    Donc au lieu de nous donner les informations au compte-gouttes, fait nous plutôt un copier-coller de ton code et des valeurs exacte que tu passes (attention au caractères non-imprimables).

    a++

  12. #12
    Membre averti
    Inscrit en
    Août 2005
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 22
    Par défaut
    je crois avoir d'ou viens l'erreur :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Locale 		locale 		= Locale.getDefault();
    			DateFormat 	dateFormat 	= DateFormat.getDateInstance(DateFormat.SHORT, locale);
    			String		date		= dateFormat.format(cell.getDateCellValue());
     
    			Pattern p = Pattern.compile("[0-9]{2}/[0-9]{2}/[0-9]{4}");		
    			Matcher m = p.matcher(date);
     
    			String tmp	=	new String("12/01/06");
    			System.out.println(tmp);
     
    			if(m.matches()){
    				System.out.println(dateFormat.format(cell.getDateCellValue()));
    			}
    La String date recuperé via le dateFormat stock les caracteres dans char[16] value
    alors que la String tmp stock les caracteres dans char[8] value

Discussions similaires

  1. split d'un String/expression reguliere
    Par loonis dans le forum Collection et Stream
    Réponses: 6
    Dernier message: 28/05/2008, 15h16
  2. [String] Expression régulière split
    Par kalos dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 20/02/2006, 16h09
  3. [String] Expression régulière et caractères spéciaux
    Par Johnbob dans le forum Collection et Stream
    Réponses: 5
    Dernier message: 13/01/2006, 18h27
  4. [String] rendre une expression reguliere insensible à la case
    Par chimical dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 07/05/2004, 11h38
  5. [String][replaceAll][Expression régulière]Remplacement multi
    Par cpr0 dans le forum Collection et Stream
    Réponses: 9
    Dernier message: 09/04/2004, 16h40

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