Validation de caractères dans une chaine [Résolu]

Signaler
Messages postés
75
Date d'inscription
samedi 26 juillet 2003
Statut
Membre
Dernière intervention
21 mai 2014
-
Messages postés
28951
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
15 juillet 2020
-
Bonjour,

par cette ligne de code :

if ValideVar[0:2] != "pp" and ValideVar[-1:-3] != "pp":

je tente de valider que les 2 premier caractère ET que les 2 derniers sont différent de "p".

Donc voici ce qui passerais ou ne passerais pas :

Exemple :
- Chaine = fruits -ok passe sans validation
- Chaine = ppfruitspp -C'est ce que je dois valider
- Chaine = pfruitspp -ok passe sans validation

- Présentement, lorsque j'ai ceci comme chaine à valider : opp, (la fin oui c'est "pp" mais pas le début) il me valide alors qu'il ne devrait pas....

Vous avez une idée de la bonne syntaxe ? ou ce que je fais pas de pas correct ?

Merci à vous

2 réponses

Messages postés
28951
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
15 juillet 2020
333
Bonjour,
je ne dev pas en Python, toutesfois pour traiter ta question je t'inviterai à regarder du côté des expressions régulières.
Celle qui devrait te correspondre serait : ^pp*.*pp$

Explications expressions régulières :
http://www.tutorialspoint.com/python/python_reg_expressions.htm

Site pour tester :
https://pythex.org/


Messages postés
75
Date d'inscription
samedi 26 juillet 2003
Statut
Membre
Dernière intervention
21 mai 2014

Merci à toi, les liens que tu m'a donné je vais les utiliser assez régulièrement. C'est très intéressant.

J'ai résolu le problème, en faite étant donné que j'était dans la négation, je devais utiliser un or au lieu du and.

Voici apres correction si jamais sa peut être utile a quelqu'un :
if ValideVar[0:2] != "pp" or ValideVar[-2:] != "pp":
Messages postés
28951
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
15 juillet 2020
333
pas sur qu'avec un OR tu règles ton souci...
Si je lis ce que signifie ta ligne de code...
Si ValidVar[0:2] n'est pas égale à "PP" OU que ValidVar[-2:] n'est pas égale à PP alors... ce qui veut dire que si ton mot Ne commence pas ou ne finit pas par PP..la condition sera vérifiée...
Donc : ppfruitspp sera validé ok.. mais aussi
ppfruitsddf, fruitspp ... etc..

tu as testé avec le AND maintenant que tu as trouvé la syntaxe correcte pour avoir la fin de ta chaine ?
if ValideVar[0:2] != "pp" and ValideVar[-2:] != "pp":