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 :

pattern mot composé de voyelles et consonnes en alternance [RegEx]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2018
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2018
    Messages : 11
    Par défaut pattern mot composé de voyelles et consonnes en alternance
    je cherche un pattern pour récupérer des mots qui ne sont fait que d'une succession de 1 consonne et de 1 voyelle. Donc qui retourne
    patatine , papa, papi, tata, patate mais pas chat, pétaudière pantoufle gagne.

    merci à mon futur sauveur, dieu lui rendra au centuple.

  2. #2
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    Salut,

    un regex qui fasse ça !!!
    purée, si ça existe, je vais apprendre un truc.
    Au fait la première lettre est aléatoire ou c'est toujours une consonne ?
    La source est une liste de mots ou un texte ?

  3. #3
    Membre averti
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2018
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2018
    Messages : 11
    Par défaut
    ben j'ai commencé par un truc tout simple comme ça ([^aeiouy]{1}[aeiouy]{1}) mais je rencontre 2 problèmes que mes limitations en regex me donnent. Comment lui dire que l'on veut uniquement ce pattern une ou plusieurs fois et que l'on ne veut que ça.
    pour le début pour l'instant c'est pas très grave si déjà on retourne des mots comme patate papa. Eva, même si elle fut la première femme, attendra un peu.

    la source https://www.dcode.fr/recherche-mot-regexp

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ^(([^aeiouy][aeiouy])+[^aeiouy]?|([aeiouy][^aeiouy])+[aeiouy]?)$/i
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ^(([^aeiouyàâäéèêëîïôöùûüÿ][aeiouyàâäéèêëîïôöùûüÿ])+[^aeiouyàâäéèêëîïôöùûüÿ]?|([aeiouyàâäéèêëîïôöùûüÿ][^aeiouyàâäéèêëîïôöùûüÿ])+[aeiouyàâäéèêëîïôöùûüÿ]?)$/i
    Mais un spécialiste devrait faire mieux.

  5. #5
    Expert confirmé Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 986
    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 986
    Par défaut
    Il y a deux manières de faire:
    1. soit on décrit la chaîne de bout en bout (la technique montrée par jreaux)
    2. soit on interdit 2 consonnes ou 2 voyelles consécutives.


    Pour une liste de mots sans accents (comme sur le site):
    1. ^(?:[aeiouy](?:[^aeiouy][aeiouy])*[^aeiouy]?|[^aeiouy](?:[aeiouy][^aeiouy])*[aeiouy]?)$ (Un peu plus longue que celle de jreaux mais le principe est le même. Permet d'avoir les mots d'une seule lettre.)
    2. ^(?!.*[aeiouy]{2})(?!.*[^aeiouy]{2}) (On utilise deux tests avant négatifs, negative lookaheads, ancrés au début de la chaîne)


    NB: on peut aussi faire une sorte de mix des deux en décrivant toute la chaîne de bout en bout mais en interdisant la succession des voyelles ou consonnes: ^(?:([aeiouy])(?!(?1))|([^aeiouy])(?!(?2)))+$ (On utilise des groupes de capture puis des références vers ces groupes dans des tests avant négatifs. En bon français: soit une voyelle non suivie d'une consonne, soit une consonne non suivie d'une voyelle, répète le tout.)
    C'est plus court que la méthode 1, mais pas forcément plus efficace.

  6. #6
    Membre averti
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2018
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2018
    Messages : 11
    Par défaut
    Merci la bonne solution pour moi c'est la première que tu donnes car soit le mot correspond en un seul bloque soit il n'est pas matcher. C'est parfait . Dieux te le rendra au centuple.
    je vais décortiquer le truc pour comprendre pourquoi je n'ai pas trouver tout seul comme un grand.

    Citation Envoyé par CosmoKnacki Voir le message
    Il y a deux manières de faire:
    1. soit on décrit la chaîne de bout en bout (la technique montrée par jreaux)
    2. soit on interdit 2 consonnes ou 2 voyelles consécutives.


    Pour une liste de mots sans accents (comme sur le site):
    1. ^(?:[aeiouy](?:[^aeiouy][aeiouy])*[^aeiouy]?|[^aeiouy](?:[aeiouy][^aeiouy])*[aeiouy]?)$ (Un peu plus longue que celle de jreaux mais le principe est le même. Permet d'avoir les mots d'une seule lettre.)
    2. ^(?!.*[aeiouy]{2})(?!.*[^aeiouy]{2}) (On utilise deux tests avant négatifs, negative lookaheads, ancrés au début de la chaîne)


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

Discussions similaires

  1. [RegEx] Mot composé en vérifiant la longueur
    Par Invité dans le forum Langage
    Réponses: 8
    Dernier message: 16/05/2013, 08h34
  2. Première lettre majuscule d'un mot composé
    Par juliotte dans le forum Langage
    Réponses: 9
    Dernier message: 16/12/2009, 15h10
  3. Réponses: 0
    Dernier message: 18/09/2009, 11h55
  4. \hyphenation{un-mot-composé} ? _
    Par kloss dans le forum Mise en forme
    Réponses: 1
    Dernier message: 19/06/2006, 12h44
  5. [HTML] remplissage de ma zone de texte par mot composé?
    Par zorba49 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 07/09/2005, 16h59

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