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

Discussion :

question sur regex

  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2018
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2018
    Messages : 52
    Par défaut question sur regex
    Bonjour,
    Je ne sais pas trop où mettre cette question, j'imagine que vu que c'est une question de débutant c'est correct ici ?

    Alors, je débute dans les regex, et j'aimerais faire une requête qui trie des cartes. Je voudrais des trios de 3 cartes, mais pas de paires.
    Exemple :
    9pique8coeur6pique -> oui
    9coeur6coeur6pique -> non

    comme les couleurs sont, dans ma liste, représentées par une seule lettre, j'ai fait ça :
    [2-9TJQKA].[2-9TJQKA].[2-9TJQKA]. ce qui me donne toutes les combinaisons. Mais je ne sais pas comment interdire que la deuxième carte soit de la même hauteur que la première et que la troisième soit de la même hauteur que la deuxième...

    Quelqu'un a une idée ?

    Merci d'avance

  2. #2
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2018
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2018
    Messages : 52
    Par défaut
    Du coup j'ai trouvé ma réponse, si quelqu'un cherche à peu près la même chose il s'agit d'utiliser les groupes en mettant des parenthèses, puis (?! ... ) pour dire qu'on ne veut pas que ce groupe se répète juste après. Pour moi ça donne ça :

    ^[2-9TJQKA].[2-9TJQKA].[2-9TJQKA]. -> ^([2-9TJQKA]).(?!\1)([2-9TJQKA]).(?!\2)[2-9TJQKA]. et il n'y a pas de paire (pour moi c'est trié donc si la 2è carte et la 3è ne forment pas une paire, la 3è et la 1è ne formeront jamais. J'imagine que sur un groupe non trié ^([2-9TJQKA]).(?!\1)([2-9TJQKA]).(?!\1\2)[2-9TJQKA]. fonctionne mais je n'ai pas testé.

    Voilà, si ça peut être utile à quelqu'un

  3. #3
    Expert confirmé Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 983
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 983
    Par défaut
    Bon travail.


    par contre:
    J'imagine que sur un groupe non trié ^([2-9TJQKA]).(?!\1)([2-9TJQKA]).(?!\1\2)[2-9TJQKA]. fonctionne mais je n'ai pas testé.
    C'est faux.

    Déjà regardons le (?!\1\2) au niveau de la dernière carte: cela signifie "non suivi de la «valeur» de la première carte suivie de la «valeur» de la deuxième carte" alors que ce que tu cherches à exprimer est: "non suivi de la «valeur» de la première carte ou de la «valeur» de la deuxième carte". Donc en utilisant la barre verticale pour exprimer le ou: (?!\1|\2).

    Dans ton cas, l'ordre visiblement facilite la tâche (dans le sens où il limite les possibilités). Mais il est possible de résoudre ton problème d'une manière plus générale (en ignorant l'ordre des cartes et en posant une condition de non répétition dés le début de la chaîne):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ^(?!.*([2-9TJQKA]).*\1)(?:[2-9TJQKA].){3}$
    En écrivant ça, le groupe de capture peut tout aussi bien être la «valeur» de la première, deuxième ou nième carte et on impose que cette «valeur» ne soit pas répétée plus tard avec un seul test avant négatif (negative lookahead) ancré juste après le ^.
    Brachygobius xanthozonus
    Ctenobrycon Gymnocorymbus

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

Discussions similaires

  1. Question sur regex
    Par HerQuLe dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 03/03/2010, 18h53
  2. Question sur les Regex. interdire une chaine
    Par cysboy dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 20/05/2007, 13h49
  3. Questions sur une Regex
    Par mpereg dans le forum Général Python
    Réponses: 7
    Dernier message: 09/03/2007, 19h50
  4. Question sur les regex, besoin d'une lumière
    Par Cladjidane dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 09/03/2007, 12h28
  5. [RegEx] questions sur regex
    Par zimotep dans le forum Langage
    Réponses: 4
    Dernier message: 04/10/2006, 14h28

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