powershell_regex

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
powershell_regex [2020/01/17 16:09] – [Les ensembles de caractères] nekanpowershell_regex [2021/03/05 15:59] (Version actuelle) nekan
Ligne 1: Ligne 1:
-~~CLOSETOC~~ 
 ====== Les expressions régulières (regex) ====== ====== Les expressions régulières (regex) ======
 +<label type="info">Création</label> --- //[[nekan@shyrkasystem.com|Nicolas THOREZ]] 2020/01/17 15:31//
  
 Les expressions régulières ou regex peuvent paraître compliquées au premier abord mais en y regardant de plus près, on se rend compte que c'est plutôt simple. Le principe d'une expression régulière est de créer un schéma qui permettra de valider la forme d'une chaîne de caractères. Par exemple, si dans un script, vous demandez à l'utilisateur de renseigner son numéro de téléphone au format international, il vous faudra valider la réponse de ce dernier. Si il répond ''+33123456789'' pour la france ou ''+8612345678901'' pour un portable chinoix, c'est bon, mais si il répond ''toto@messagerie.com'' ou ''James BOND'', ça ne l'est pas. La réponse va alors pouvoir être comparée à une regex et si le résultat renvoyé est ''$true'', alors la réponse de l'utilisateur correspond au format de réponse attendue. Les expressions régulières ou regex peuvent paraître compliquées au premier abord mais en y regardant de plus près, on se rend compte que c'est plutôt simple. Le principe d'une expression régulière est de créer un schéma qui permettra de valider la forme d'une chaîne de caractères. Par exemple, si dans un script, vous demandez à l'utilisateur de renseigner son numéro de téléphone au format international, il vous faudra valider la réponse de ce dernier. Si il répond ''+33123456789'' pour la france ou ''+8612345678901'' pour un portable chinoix, c'est bon, mais si il répond ''toto@messagerie.com'' ou ''James BOND'', ça ne l'est pas. La réponse va alors pouvoir être comparée à une regex et si le résultat renvoyé est ''$true'', alors la réponse de l'utilisateur correspond au format de réponse attendue.
Ligne 40: Ligne 40:
 Voici en suivant les différentes règles structurantes des regex. Voici en suivant les différentes règles structurantes des regex.
  
-<note>Tout caractère ou chaîne de caractères n'étant pas traité ici sera interprété tel quel par la regex.</note>+<callout type="info" icon="true" title="Interprétation">Tout caractère ou chaîne de caractères n'étant pas traité ici sera interprété tel quel par la regex.</callout>
  
 ===== Les caractères de structures ===== ===== Les caractères de structures =====
Ligne 82: Ligne 82:
 "tutu" -match "(ta|ti|to){2}" "tutu" -match "(ta|ti|to){2}"
 $false</sxh>  | $false</sxh>  |
-|  ''\''  |  Lorsqu'il précède un des ces caractères reservés ''[]().\^$|?*+{}'', la regex va n'interprètera pas le caractère comme une règle mais seulement comme un simple caractère. Ainsi ''\('' ne signifie pas le début d'un groupe mais simplement le caractère ''('' |  <sxh powershell>"1" -match "[0-9]"+|  ''\''  |  Lorsqu'il précède un des ces caractères reservés ''[]().\^$|?*+{}'', la regex n'interprètera pas le caractère comme une règle mais seulement comme un simple caractère. Ainsi ''\('' ne signifie pas le début d'un groupe mais simplement le caractère ''('' |  <sxh powershell>"1" -match "[0-9]"
 $true $true
 "1" -match "\[0-9\]" "1" -match "\[0-9\]"
Ligne 95: Ligne 95:
 |  ''*''  |  Indique que la règle précédente peut être répété de 0 à x fois.  |  <sxh powershell>"a" -match "^[a]*$" |  ''*''  |  Indique que la règle précédente peut être répété de 0 à x fois.  |  <sxh powershell>"a" -match "^[a]*$"
 $true $true
-"" -match "^[a]*$"+'' -match "^[a]*$"
 $true $true
 "aaaaaaaaaaaaaaaaaaaaaaaa" -match "^[a]*$" "aaaaaaaaaaaaaaaaaaaaaaaa" -match "^[a]*$"
Ligne 103: Ligne 103:
 |  ''+''  |  Indique que la règle précédente peut être répété de 1 à x fois.  |  <sxh powershell>"a" -match "^[a]+$" |  ''+''  |  Indique que la règle précédente peut être répété de 1 à x fois.  |  <sxh powershell>"a" -match "^[a]+$"
 $true $true
-"" -match "^[a]+$"+'' -match "^[a]+$"
 $false $false
 "aaaaaaaaaaaaaaaaaaaaaaaa" -match "^[a]+$" "aaaaaaaaaaaaaaaaaaaaaaaa" -match "^[a]+$"
Ligne 111: Ligne 111:
 |  ''?''  |  Indique que la règle précédente peut être répété de 0 à 1 fois.  |  <sxh powershell>"a" -match "^[a]?$" |  ''?''  |  Indique que la règle précédente peut être répété de 0 à 1 fois.  |  <sxh powershell>"a" -match "^[a]?$"
 $true $true
-"" -match "^[a]?$"+'' -match "^[a]?$"
 $true $true
 "aaaaaaaaaaaaaaaaaaaaaaaa" -match "^[a]?$" "aaaaaaaaaaaaaaaaaaaaaaaa" -match "^[a]?$"
 $false</sxh>  | $false</sxh>  |
-|  ''{}''  |  Si les ''{}'' contiennent un nombre, il s'agit du nombre d'itération obligatoire de la règle précédente. Les ''{}'' peuvent aussi 2 nombres (x et y),séparés par une virgule, le premier étant plus petit que le second, ce qui signifie que la règle précédente doit être répétée entre x et y fois. y peut être ignoré, ce qui indique une limite haute infinie.    <sxh powershell>"aaa" -match "^[a]{3}$"+|  ''{}''  |  Si les ''{}'' contiennent un nombre, il s'agit du nombre d'itération obligatoire de la règle précédente. Les ''{}'' peuvent aussi comportées 2 nombres (x et y), séparés par une virgule, le premier étant plus petit que le second, ce qui signifie que la règle précédente doit être répétée entre x et y fois. y peut être ignoré, ce qui indique une limite haute infinie.    <sxh powershell>"aaa" -match "^[a]{3}$"
 $true $true
 "aaa" -match "^[a]{2,3}$" "aaa" -match "^[a]{2,3}$"
Ligne 143: Ligne 143:
 "a" -match "\d" "a" -match "\d"
 $true</sxh>  | $true</sxh>  |
-|  ''\w''  |  Correspond à n'importe quel caractère alphabétique. Équivalent de ''[a-z0-9]'' |  <sxh powershell>"+" -match "\w"+|  ''\w''  |  Correspond à n'importe quel caractère alphabétique. Équivalent de ''[a-z0-9_]'' |  <sxh powershell>"+" -match "\w"
 $false $false
 "0" -match "\w" "0" -match "\w"
Ligne 149: Ligne 149:
 "a" -match "\w" "a" -match "\w"
 $true</sxh>  | $true</sxh>  |
-|  ''\W''  |  Correspond à n'importe quel caractère n'étant pas alphabétique. Équivalent de ''[^a-z0-9]'' |  <sxh powershell>"+" -match "\W"+|  ''\W''  |  Correspond à n'importe quel caractère n'étant pas alphabétique. Équivalent de ''[^a-z0-9_]'' |  <sxh powershell>"+" -match "\W"
 $true $true
 "0" -match "\W" "0" -match "\W"
Ligne 167: Ligne 167:
  
   * Vérifier une adresse IPv4 :   * Vérifier une adresse IPv4 :
-<sxh powershell>"^((25[0-5]|2[0-4][0-9]|[1]?[0-9]?[0-9])\.){3}(25[0-5]|2[0-4][0-9]|[1]?[0-9]?[0-9])$"</sxh>+<sxh powershell>"^((25[0-5]|2[0-4]\d]|[1]?\d?\d)\.){3}(25[0-5]|2[0-4]\d|[1]?\d?\d)$"</sxh>
  
   * Vérifier une adresse IPv4, hors adresse de réseau et de broadcast (sans les .0 et .255) :   * Vérifier une adresse IPv4, hors adresse de réseau et de broadcast (sans les .0 et .255) :
-<sxh powershell>"^(25[0-5]|2[0-4][0-9]|[1][0-9]?[0-9]?|[1-9][0-9]?)\.((25[0-5]|2[0-4][0-9]|[1]?[0-9]?[0-9])\.){2}(25[0-4]|2[0-4][0-9]|[1][0-9]?[0-9]?|[1-9][0-9]?)$"</sxh>+<sxh powershell>"^(25[0-5]|2[0-4]\d]|[1]\d?\d?|[1-9]\d?)\.((25[0-5]|2[0-4]\d|[1]?\d?\d)\.){2}(25[0-4]|2[0-4]\d|[1]\d?\d?|[1-9]\d?)$"</sxh>
  
   * Vérifier une adresse mail :   * Vérifier une adresse mail :
-<sxh powershell>"^\w(\w|[.-])*@\w(\w|-)*(\.([a-z]){2,3}){1,2}$"</sxh>+<sxh powershell>"^\w*[.-]?\w*@\w(\w|-)*(\.([a-z]){2,3}){1,2}$"</sxh>
  
- --- //[[nekan@shyrkasystem.com|Nicolas THOREZ]] 2020/01/17 15:31// 
 ~~DISCUSSION~~ ~~DISCUSSION~~
  
  • powershell_regex.1579273799.txt.gz
  • Dernière modification : 2020/01/17 14:09
  • (modification externe)