-
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.
-
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
-
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:
^([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