[Powershell] Résultat RegExp incorrect (bug?)

Résultat RegExp incorrect (bug?) [Powershell] - Shell/Batch - Programmation

Marsh Posté le 04-10-2023 à 10:15:15    

Bonjour,
 
Je voulais me faire une petite fonction qui prenne un string en paramètre et test si le format ressemble à un simple mot ou une adresse mail (= SamAccountName et UserPrinciapName dans mon entreprise).
Pour ce faire, je voulais utiliser des RegExp et lors de mes tests qui ne me renvoyaient pas le résultat attendu, je me suis aperçu d'un comportement bizarre dont voici un exemple :
 

Code :
  1. PS C:\Users\moi> "toto.titi@tutu.fr" -match "[a-z]+"
  2. True


 
Cette RegExp ne devrait matcher qu'avec des mots qui contiennent des caractères de a à z (donc pas de "@" ou de "." ) et pourtant le test me renvoi True
 
J'ai essayé avec -cmatch dans le doute : idem.
J'ai fait le test sur 2 machines différentes (un windows server et un win11) : idem
J'ai essayé sous Powershell et sous Powershell ISE : idem
 
Pire, j'ai essayé une RegExp qui test seulement un caractère et ...
 

Code :
  1. PS C:\Users\moi> "toto.titi@tutu.fr" -match "[a-z]"
  2. True


 
Si quelqu'un a une idée sur la question :roll:
En vous remerciant par avance.

Reply

Marsh Posté le 04-10-2023 à 10:15:15   

Reply

Marsh Posté le 04-10-2023 à 11:43:35    

Attention je ne connais pas Powershell, les RegExp que je fais c'est en syntaxe Perl (PCRE)!

 
sebastien4444 a écrit :

Cette RegExp ne devrait matcher qu'avec des mots qui contiennent des caractères de a à z

Non, elle va "matcher" n'importe quelle chaîne qui contient au moins deux caractères a-z à la suite. :o

 

Si tu veux tester toute la chaîne faut prendre un truc genre ^[a-z]+$, ça ça va prendre uniquement des chaînes entièrement composées de lettres.

Message cité 1 fois
Message édité par rat de combat le 04-10-2023 à 11:43:47
Reply

Marsh Posté le 04-10-2023 à 12:39:23    

rat de combat a écrit :

Non, elle va "matcher" n'importe quelle chaîne qui contient au moins deux caractères a-z à la suite. :o


Au moins un  :o  :o  
.+ -> un ou plus
.* -> zéro ou plus

Reply

Marsh Posté le 04-10-2023 à 15:42:23    

Tu as raison, ça arrive quand on poste en étant pressé... :jap:

Reply

Marsh Posté le 04-10-2023 à 17:19:29    

Ah mais oui !!! Merci de vos réponses qui m'ont débloqués l'esprit :D
En fait, comme les exercices d'entrainement que j'ai fait sur les RegExp avait pour but de matcher entièrement une chaîne de caractère, j'ai complètement oublié que dans la pratique, matcher une partie de la chaîne suffit à renvoyer Vrai.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed