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

Scripts/Batch Discussion :

Erreur sur une comparaison RegExp [PowerShell]


Sujet :

Scripts/Batch

  1. #1
    Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2014
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Octobre 2014
    Messages : 99
    Points : 45
    Points
    45
    Par défaut Erreur sur une comparaison RegExp
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    PS C:\Users\moi> "toto.titi@tutu.fr" -match "[a-z]+"
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    PS C:\Users\moi> "toto.titi@tutu.fr" -match "[a-z]"
    True
    Si quelqu'un a une idée sur la question
    En vous remerciant par avance.

  2. #2
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 201
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 201
    Points : 5 795
    Points
    5 795
    Par défaut
    "toto.titi@tutu.fr" -match "[a-z]+" => contient au moins 1 caractère alphabétique
    Je ne vois aucune anomalie

    Essaie ceci
    "toto.titi@tutu.fr" -match "^[a-z]+$" => contient au moins 1 caractères alphabétique du début à la fin
    Ou l'inverse
    "toto.titi@tutu.fr" -notmatch "[^a-z]" => ne contient aucun caractère autre que alphabétique

    La différence entre ces 2 regexp est que la dernière valide aussi les chaines vides

  3. #3
    Membre chevronné
    Avatar de I'm_HERE
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 013
    Points : 1 991
    Points
    1 991
    Par défaut
    il y a des API qui peuvent te faciliter la vie comme la classe-raccourcis '[mailaddress]'

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    PS C:\Users> [mailaddress]::new("toto.titi@tutu.fr") | select user, Host
    
    User      Host
    ----      ----
    toto.titi tutu.fr

  4. #4
    Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2014
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Octobre 2014
    Messages : 99
    Points : 45
    Points
    45
    Par défaut
    Ah mais oui !!! Merci de vos réponses qui m'ont débloqués l'esprit
    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.
    Et merci pour le conseil d'utilisation des classes ;NET

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [12c] Erreur sur une comparaison de dates
    Par bestorchidee dans le forum SQL
    Réponses: 3
    Dernier message: 22/05/2021, 14h23
  2. [XL-2010] Erreur #REF! sur une comparaison de cellules
    Par xless dans le forum Excel
    Réponses: 3
    Dernier message: 18/04/2014, 10h27
  3. erreur de syntaxe sur une comparaison de date
    Par tofito dans le forum SQL
    Réponses: 2
    Dernier message: 01/12/2009, 13h16
  4. Réponses: 4
    Dernier message: 14/06/2004, 16h18
  5. Erreur sur une fonction avec des paramètres
    Par Elois dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 05/05/2004, 21h00

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