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 PHP Discussion :

[Système] Les mots qui s'écrivent avec certaines lettres


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Janvier 2006
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 71
    Par défaut [Système] Les mots qui s'écrivent avec certaines lettres
    Bonjour,

    Je m'arrache les cheveux pour réussir à écrire un motif qui décrirait les chaînes de caractères s'écrivant avec, par exemple, un A, deux B et deux C au plus.

    Ainsi, les chaînes :
    CAC, CAB, BAB
    seraient reconnues

    mais pas BABA ou CACA (utilisant deux fois la lettre A)

    Existe-t-il un moyen avec une expression régulière d'exprimer cela. J'ai épluché la doc, notamment les fameux slides d'Hugo Etiévant, mais je n'arrive pas à goupiller les opérateurs pour obtenir le résultat voulu.

    Merci de vos suggestions

    Sakalam

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    842
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 842
    Par défaut
    Ca s'écrit facilement sous la forme négative. Dans un programme PHP c'est tout à fait jouable d'utiliser l'expression régulière ne reconnaissant que les mots n'appartenant pas à ce langage.

  3. #3
    Membre confirmé
    Inscrit en
    Janvier 2006
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 71
    Par défaut mais encore ?
    Mon problème porte principalement sur les occurrences des lettres (dans l'exemple que je donnais, on pouvait n'utiliser qu'un seul A).

    La négation serait donc de définir les mots qui s'écrivent avec deux A ou + ?

    Comment combiner cette contrainte avec celles des autres lettres (un OR) ?

    Je continue à chercher, mais je ne suis pas un pro des regexp, (>=2 et <2 c'est aussi difficile pour moi à écrire...) alors si vous pouviez être un peu explicites, je vous serai très reconnaissant.

    S.

  4. #4
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 703
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 703
    Par défaut
    je pense que les expression régulières sont plus pratique si tu connais la position de chaque lettre

    là tu poses des conditions sur les lettres quelques soit leur position donc dans ce cas je ferrais plutôt un parcours de la chaine en comptant le nombre de chaque caractère et à la fin je regarde si le compte est bon

  5. #5
    Membre émérite Avatar de Korko Fain
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    632
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 632
    Par défaut
    Il te serai possible de faire ça en regex MAIS seulement si ton mot est tres court car il te faudrait faire tout les cas acceptables.
    Parcourir la chaine et compter est à mon avis bien mieux et plus rapide.

  6. #6
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    842
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 842
    Par défaut
    Sakalam, oui, c'est ça.

    Un mot qui s'écrit avec 2 a :

    avec 3 b :

    Tu cherches les mots qui s'écrivent avec au plus un a, deux b et deux c. La négation de la proposition "w est un mot cherché" s'écrit effectivement :

    w s'écrit avec au moins 2 a, ou au moins trois b, ou au moins trois c.

    Pour s'en convaincre, il suffit de voir que tout mot qui répond à cette seconde condition ne répond pas à la première, et que tout mot qui répond à la première ne peut pas répondre à la seconde.

    Ce qui donne l'expression régulière :

    .*a.*a.*|.*b.*b.*b.*|.*c.*c.*c.*
    L'automate complémentaire est sacrément moins beau...

  7. #7
    Membre émérite Avatar de Korko Fain
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    632
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 632
    Par défaut
    ce n'est pas . qu'il faut utiliser mais [^a]

Discussions similaires

  1. Réponses: 4
    Dernier message: 23/10/2014, 23h55
  2. Les règles qui s'appliques avec du code open source.
    Par Battant dans le forum Logiciels Libres & Open Source
    Réponses: 0
    Dernier message: 19/07/2014, 16h56
  3. Réponses: 5
    Dernier message: 12/06/2012, 04h24
  4. Trouver les mots qui diffèrent de deux caractères.
    Par I'mSky dans le forum Langage
    Réponses: 9
    Dernier message: 26/11/2011, 14h52
  5. Réponses: 5
    Dernier message: 19/01/2007, 23h53

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