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

Qt Discussion :

Expressions régulières


Sujet :

Qt

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 27
    Par défaut Expressions régulières
    Bonjour,

    Je souhaite effectuer une troncature dans une liste de mots de cette façon :
    bouillir -> bouilli
    ordinateur -> ordi
    eau -> eau

    La troncature se fait à partir du 2ème bloc (1 à n voyelles) de voyelle détecté.

    Je pense qu'il est judicieux d'utiliser les expressions régulières pour cela, mais je ne sais pas vraiment comment m'y prendre.

    Est ce que vous pouvez me dire si l'expression semble correcte ?

    QRegExp expression("^[aeiouy]+[^aeiouy]+[aeiouy]")

    Merci beaucoup.

  2. #2
    Membre éprouvé
    Avatar de ymoreau
    Homme Profil pro
    Ingénieur étude et développement
    Inscrit en
    Septembre 2005
    Messages
    1 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur étude et développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 154
    Par défaut
    A première vue ça me semble correct, mais avec les expressions régulières on ne peut vraiment pas se fier à sa vue il faut tester, avec différentes chaines. Il y a souvent des comportements de l'expression qu'on a pas prévu. Par exemple ton expression validerait aussi 2 suites de voyelles séparées par un tiret (ou tout autre caractère), donc selon ce que tu as en entrée ça peut fausser.

    Par ailleurs, puisque tu souhaites récupérer une sous chaine, je te conseille d'utiliser les captures, c'est à dire encadrer une partie de l'expression avec des parenthèse (dans ton cas toute l'expression). Tu peux ensuite récupérer la partie "capturée" par l'expression entre parenthèse avec cette fonction :
    http://qt.developpez.com/doc/4.7/qregexp/#cap

  3. #3
    Membre chevronné
    Profil pro
    Inscrit en
    Février 2009
    Messages
    383
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2009
    Messages : 383
    Par défaut
    Salut,

    "bouillir" ne correspond pas à ta regex vu qu'il commence par "b" et que tu demande une voyelle pour débuter.

    Voici une possibilité...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ^([a-z]?[aeiouy]+)([^aeiouy]*[aeiouy])
    à tester avec d'autres exemples...

    Je pensais par exemple à un mot tel que "abriter" => "abris" qui ne peut fonctionner.
    Je te suggère d'aller sur des sites avec les regex en ligne pour y tester plusieurs chaines rapidement : http://www.regexplanet.com/advanced/java/index.html

Discussions similaires

  1. [RegEx] Expression régulières : Balises <SCRIPT>
    Par Gwipi dans le forum Langage
    Réponses: 2
    Dernier message: 24/04/2006, 23h25
  2. Expression réguliére
    Par Mad_Max dans le forum Langages de programmation
    Réponses: 2
    Dernier message: 16/09/2003, 18h17
  3. [expression régulière] mon cerveau fait des noeuds..
    Par nawac dans le forum Algorithmes et structures de données
    Réponses: 7
    Dernier message: 27/05/2003, 10h06
  4. Expressions réguliéres
    Par Tooms dans le forum Langage
    Réponses: 4
    Dernier message: 06/12/2002, 18h42
  5. Réponses: 5
    Dernier message: 11/06/2002, 15h21

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