Page 1 sur 1

RegEx : Vérifier un mot dans une liste

Publié : jeu. 13/déc./2012 16:39
par falsam
Je souhaite vérifier un mot avec une liste préexistante en utilisant les expressions régulieres.

Code : Tout sélectionner

;Vérifier un mot dans une liste
Global *RegMatch = CreateRegularExpression(#PB_Any ,"^(tomate|courgette|pomme de terre){1}")

Procedure EstUnlegume(Valeur.s)
  ProcedureReturn MatchRegularExpression (*RegMatch, Valeur)
EndProcedure

Debug EstUnlegume("courgette") ;Retournera #True

Debug EstUnlegume("pomme de terre") ;Retournera #True

Debug EstUnlegume("poire") ;Retournera #False
Ce code fonctionne bien, mais j'ai un souci avec la "casse"

Code : Tout sélectionner

Debug EstUnlegume("Courgette")
retournera #False à cause de la majuscule.
je peux bien sur modifier ce dernier exemple de cette maniére

Code : Tout sélectionner

Debug EstUnlegume(LCase("Courgette"))
mais j'aimerais quelque chose de plus propre. Pour cela, j'ai essayé de modifier l'expression régulière en ajoutant le modificateur /i (case Insensitive) à la regexp mais sans résultat.

Merci à celui ou ceux qui apporteront une réponse. :)

Re: RegEx : ça casse !!!

Publié : jeu. 13/déc./2012 16:52
par djes

RegEx : Vérifier un mot dans une liste

Publié : jeu. 13/déc./2012 20:07
par falsam
Merci djes :)

le code fonctionnelle avec quelques exemples

Code : Tout sélectionner

;Vérifier un mot dans une liste
Global *RegMatch = CreateRegularExpression(#PB_Any ,"^(?i)(tomate|courgette|pomme de terre){1}")

Procedure EstUnlegume(Valeur.s)
  ProcedureReturn MatchRegularExpression (*RegMatch, Valeur)
EndProcedure

Debug EstUnlegume("courgette") ;Retournera #True

Debug EstUnlegume("pomme de terre") ;Retournera #True

Debug EstUnlegume("poire") ;Retournera #False

Debug EstUnlegume("Courgette") ;Retournera #True

Debug EstUnlegume("pomme de Terre") ;Retournera #True

Re: RegEx : Vérifier un mot dans une liste

Publié : jeu. 13/déc./2012 22:11
par graph100
je vais lancer la polémique :lol: :

la tomate c'est un fruit, non ?

(yark yark yark :mrgreen: )

Re: RegEx : Vérifier un mot dans une liste

Publié : ven. 14/déc./2012 7:42
par Mindphazer
graph100 a écrit :je vais lancer la polémique :lol: :

la tomate c'est un fruit, non ?

(yark yark yark :mrgreen: )
Les deux ! (botaniquement parlant, c'est un fruit. Culturellement paralnt, chez nous, c'est un légume)
http://www.jesuiscultive.com/spip.php?article197
http://www.gerbeaud.com/fruit-legume-de ... tomate.php

Re: RegEx : Vérifier un mot dans une liste

Publié : ven. 14/déc./2012 9:04
par djes
falsam a écrit :Merci djes :)

le code fonctionnelle avec quelques exemples

Code : Tout sélectionner

;Vérifier un mot dans une liste
Global *RegMatch = CreateRegularExpression(#PB_Any ,"^(?i)(tomate|courgette|pomme de terre){1}")

Procedure EstUnlegume(Valeur.s)
  ProcedureReturn MatchRegularExpression (*RegMatch, Valeur)
EndProcedure

Debug EstUnlegume("courgette") ;Retournera #True

Debug EstUnlegume("pomme de terre") ;Retournera #True

Debug EstUnlegume("poire") ;Retournera #False

Debug EstUnlegume("Courgette") ;Retournera #True

Debug EstUnlegume("pomme de Terre") ;Retournera #True
Moi je mettrais le (?i) avant le ^... Mais bon je chipote, puisque ça fonctionne ;)

Re: RegEx : Vérifier un mot dans une liste

Publié : ven. 14/déc./2012 9:19
par falsam
djes a écrit :Moi je mettrais le (?i) avant le ^... Mais bon je chipote, puisque ça fonctionne ;)
Bonjour Djes. Si cette manière de faire est plus académique je suis prêt à corriger le code. :)