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 :

Regex rebelle, répétition d'un même chiffre


Sujet :

Langage Java

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2013
    Messages : 43
    Points : 42
    Points
    42
    Par défaut Regex rebelle, répétition d'un même chiffre
    Bonjour,

    Je suis face à un problème de conception d'expression régulière, le principe est simple mais pas moyen de trouver une regex qui me convient.

    Je veux vérifier si un même chiffre se répète n fois dans une suite de chiffres.
    Concrètement avec n = 3 :

    - 031119 -> ok (pour 111)
    - 888831 -> ok (pour 888)
    - 222222 -> ok (pour 222)
    - 985468 -> pas ok
    - 113798 -> pas ok

    Donc dans ce cas une expression possible est : 0{3}|1{3}|2{3}|3{3}|4{3}|5{3}|6{3}|7{3}|8{3}|9{3}

    Mais je trouve ça bien lourd à écrire, et ne parlons même pas du cas ou ça serait des lettres. Donc si vous avez des idées je prends tout ce qui passe !

  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,

    Une solution serait d'utiliser les back-références.

    • Tu définis le pattenr pour un caractères : "[0-9]"
    • Tu le définis comme un groupe en le mettant entre parenthèse : "([0-9])"
    • Tu peux désormais utiliser la back-référence ( \ suivi du numéro de groupe, donc \1 ici comme il n'y en a qu'un) pour représenter cette même valeur ailleurs.
      L'intérêt c'est que cette back-reférence prend la même valeur que le groupe une fois évalué.



    Au final ca donne ceci : "([0-9])\\1{2}"
    Soit : un chiffre entre 0 et 9, suivi du même chiffre 2 fois.



    a++

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2013
    Messages : 43
    Points : 42
    Points
    42
    Par défaut
    Je ne connaissais pas du tout ces back-références, mais ça me semble une bonne idée merci.

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

Discussions similaires

  1. Réponses: 14
    Dernier message: 14/02/2009, 07h56
  2. Réponses: 4
    Dernier message: 16/10/2008, 18h47
  3. regex pour comparer des dates, des chiffres, des nombres
    Par lex13 dans le forum Collection et Stream
    Réponses: 14
    Dernier message: 06/07/2007, 11h51
  4. Suite de nombres sans 2x même chiffre
    Par MysticKhal_0 dans le forum Algorithmes et structures de données
    Réponses: 5
    Dernier message: 26/04/2007, 10h43
  5. [Requête]Compter tous les mêmes chiffres
    Par Lex O'Mil dans le forum Requêtes et SQL.
    Réponses: 7
    Dernier message: 27/03/2007, 19h43

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