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 :

Regexp : 2 lettres consécutives différentes


Sujet :

Langage PHP

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Etudiant
    Inscrit en
    Juillet 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Juillet 2015
    Messages : 4
    Points : 1
    Points
    1
    Par défaut Regexp : 2 lettres consécutives différentes
    Bonjour / bonsoir,

    Réalisant en ce moment même un algo servant à décomposer n'importe quel mot français en syllabes, je cherche une expression reguleire (Regexp) permettant de trouver deux caractères qui se suivent mais qui ne sont pas identiques : "cg", "rt", "ab", "cl" mais pas "ll", "cc", etc...

    Une idée de comment faire ca?

    Merci d'avance,
    Adrien Lucbert

  2. #2
    Nb
    Nb est déconnecté
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 149
    Points : 421
    Points
    421
    Par défaut
    Bonjour,
    il te faut déjà definir ce qu'est une syllabe et en l'ocuurence ce n'est pas du tout une suite de 2 caractères distincts l'un de l'autre (ex. aquariophilie).
    Je pense qu'il n'est pas possible de faire ca avec une regexp. Même avec des references arrières/avant de partout, je pense qu'au final tu auras une usine à gaz non fiable.
    En revanche tu dois pouvoir écrire un algo qui le fait, mais ca risque de ne pas être trivial.

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Etudiant
    Inscrit en
    Juillet 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Juillet 2015
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Cela fait 2 semaines que je pense et code cet algo. Il fonctionne dans la majorité des cas, mais nécessite seulement quelques ajustements (dont la regex mentionnée plus tôt). Donc là n'est pas le problème, en oubliant l'algo, tout ce que je cherche est la regex citée.

    Si tu veux voir, pour l'instant mon algo donne la définition et la décomposition syllabique du mot renseigné : http://prntscr.com/iqcsl2

    Pour l'instant, en cherchant un peu plus, j'ai trouvé ça, qui match deux lettres consécutives et non identiques, sauf qu'il faut le faire pour chaque lettre de l'alphabet :

    [a-z](?<!a)a

    Donc en le répétant 26 fois ça devient long.. Une idée pour le raccourcir? (sachant que j'ai essayé de faire [a-z](?<!\1)(a), mais le \1 n'est pas accepté dans une assertion, parce que sa longueur n'est pas fixe. Erreur précise : "Look-behind pattern matches must have a bounded maximum length".)

    Merci d'avance.

  4. #4
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 867
    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 867
    Points : 6 581
    Points
    6 581
    Par défaut
    mais le \1 n'est pas accepté dans une assertion
    Dans les tests arrière uniquement (lookbehind), par contre aucun problème pour un test avant (lookahead) qui lui n'a pas cette limitation:
    Brachygobius xanthozonus
    Ctenobrycon Gymnocorymbus

  5. #5
    Nb
    Nb est déconnecté
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 149
    Points : 421
    Points
    421
    Par défaut
    Ok, je croyais que tu voulais découper en syllabe en une seule regexp.

    Si c'est juste vérifier qu'une chaine n'est pas une répetition de 2x la meme lettre, un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    !preg_match('#([a-z])\1#i', 'aa')
    va faire l'affaire.
    Mais si c'est pour integrer ca dans une autre regexp, comme ça je ne sais pas non, faut s y poser.

  6. #6
    Nouveau Candidat au Club
    Homme Profil pro
    Etudiant
    Inscrit en
    Juillet 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Juillet 2015
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    @CosmoKnacki c'est tout à fait ça, ca fonctionne! Je ne comprends pas pourquoi le \1 est interdit dans les loonbehind et pas dans les lookahead en revanche.. 🤔
    @Nb ta solution fonctionne aussi, c'est astucieux ^^

    Bien joué et merci infiniment à tous les deux!

  7. #7
    Nouveau Candidat au Club
    Homme Profil pro
    Etudiant
    Inscrit en
    Juillet 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Juillet 2015
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Voilà un exemple de ce à quoi cette regex va servir : pour le mot abdiquer, ca me match le bd au début et commence la deuxième syllabe au d, alors qu'avant, ça aurait décomposé ce mot comme ceci : [a][bdi][quer]
    https://prnt.sc/iqgi0z

Discussions similaires

  1. REGEXP - Recherche avec ou sans Zéro, suivant une lettre
    Par roseline43 dans le forum Requêtes
    Réponses: 1
    Dernier message: 26/10/2009, 21h27
  2. Etat: Lignes consécutives de différentes couleurs
    Par ragainglo dans le forum IHM
    Réponses: 1
    Dernier message: 08/08/2007, 21h42
  3. Réponses: 2
    Dernier message: 24/08/2006, 11h35
  4. [RegExp] digit ET lettre
    Par denisC dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 12/05/2005, 09h29

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