Comment utiliser Regex dans PowerShell

Comment utiliser Regex dans PowerShell
Expression régulières ou expirat Peut être compliqué pour les débutants à comprendre, mais est une technique très efficace pour interagir avec les cordes. Le langage regex est un raccourci de description de modèle puissant et est utilisé pour analyser et faire correspondre le texte. PowerShell utilise des expressions régulières de diverses manières. Parce que les commandes PowerShell ou les applets de commande sont si étroitement intégrées, il est facile d'oublier d'utiliser Regex. Peut-être que vous ne savez pas que certaines de ces commandes utilisent déjà Regex.

PowerShell peut fonctionner avec des flux d'objets plutôt que du texte. Cependant, il est relativement capable de traitement de texte. Si vous effectuez un travail lié au traitement du texte, vous saurez que le regex est l'un des concepts les plus importants dans n'importe quel langage de programmation. Dans cet article, vous vous montrerez comment utiliser Regex dans PowerShell. Alors, commençons!

Qu'est-ce que Regex dans PowerShell?

Un regex est une séquence particulière de caractères qui utilise une syntaxe spéciale pour vous aider à trouver ou à faire correspondre les chaînes ou un ensemble de chaînes. Regex est capable de rechercher, d'édition et de manipulation de données et de texte. Cette expression demande au moteur de correspondre au texte fourni.

Maintenant, nous examinerons la méthode de Utilisation de Regex dans PowerShell.

Regex avec des littéraux de caractère dans PowerShell

Tout d'abord, nous exécuterons une expression régulière en utilisant le «-correspondre»Opérateur. Cet opérateur prend une expression régulière à des fins de correspondance de motifs et des rendements "$ vrai"Si le motif correspond.

Maintenant, nous allons exécuter notre premier regex, dans lequel nous vérifierons si le «livre"Correspond au modèle"d'accord»:

> 'book' -match 'ok'

Cette expression reviendra vrai car le livre contient la chaîne "d'accord"("Livre]").

Regex avec groupe de personnages dans PowerShell

Ensuite, nous utiliserons le [Groupe de caractères] Pour correspondre à plusieurs caractères à la fois. Dans l'exemple ci-dessous, un regex "b [iog]"Est utilisé pour correspondre à"grand". L'exécution de ce regex vérifiera si les caractères entre «b" et "g"Dans" Big "Match avec le groupe de personnages"[iou]«Présent dans le«b [iou] g”Regex:

> 'Big' -match 'b [iou] g'

Dans la déclaration suivante, nous avons ajouté "livre,”Qui ne correspond pas au regex marqué. Exécutez-le et voyons quel résultat cette déclaration va montrer:

> 'book' -match 'b [iou] g'

Cette expression reviendra "FAUX" comme "livre"Ne correspond pas au regex"b [iou] g".

Regex avec divers motifs de PowerShell

Un modèle peut être une collection de caractères. Les caractères peuvent être numériques [0-9], ou basé sur l'ASCII [- ~], ou alphabétique [A-Z].

> 42 -match '[0-9] [0-9]'

Cette expression reviendra vrai car le modèle correspond à tout numéro à deux chiffres «42», dans notre cas.

Tout chiffre décimal correspondra au «\d»Classe de personnages. D'autre part, "\D"Correspondra à tout chiffre non décimal.

> 'Serveur' server-01 '-match' serveur- \ d \ d '

L'expression donnée ci-dessus renvoie True si elle correspond à un nom de serveur entre (Server-01 - Server-99).

Tout caractère de mot "[A-Z A-Z 0-9]"Sera égalé par le"\ w»Classe de personnages. Utiliser "\ W”Pour faire correspondre tout personnage non mot.

> 'Book' -match '\ w'

L'exécution de l'expression ci-dessus reviendra comme le modèle "Livre"Correspond au personnage du premier mot 'B'.

En regex, la période "(.)"Est considéré comme un personnage générique. À l'exception d'une nouvelle ligne, il correspondra à n'importe quel personnage "(\ n)". L'expression dirigée ci-dessous reviendra vrai car le modèle "[a1 \]»Correspond à quatre caractères.

> 'a1 \' -match '…'

Le "\ s”La classe de caractères est utilisée pour correspondre aux espaces blancs. Alors que, "\ S"Ou peut être utilisé pour faire correspondre les caractères sans espace.

> '-' -match '\ s-'

L'exécution de l'expression ci-dessus reviendra «vrai"Comme le motif"[-]”Utilisé les deux méthodes pour correspondre à l'espace.

Regex avec quantificateurs à PowerShell

Les quantificateurs gèrent le nombre de fois que chaque élément doit apparaître dans la chaîne d'entrée. Certains quantificateurs disponibles dans PowerShell sont les suivants:

  • [*] est utilisé pour spécifier l'occurrence de tout élément comme «zéro ou plus de fois."
  • [+] est utilisé pour spécifier l'occurrence de tout élément comme «une ou plusieurs fois."
  • [?]] est utilisé pour spécifier l'occurrence de tout élément comme «une ou zéro fois."
  • [n] est utilisé pour spécifier l'occurrence de tout élément exactement comme «n fois."
  • n, m est utilisé pour spécifier l'occurrence de tout élément comme «au moins n fois, mais pas plus que m."

La commande ci-dessous renvoie true pour tout nom de serveur, même les noms de serveurs sans tirets.

> 'Server01' -match '[a-z]+-?\ d \ d '

Maintenant, nous allons essayer de faire correspondre un numéro de téléphone avec le Regex "\ d 3 - \ d 3 - \ d 4".

> '111-222-3333' -match '\ d 3 - \ d 3 - \ d 4'

L'expression reviendra "vrai"S'il découvre un numéro de téléphone correct selon le modèle spécifié.

Dans la partie suivante, nous utiliserons Regex dans les scripts PowerShell. Pour cela, d'abord, ouvrez votre Windows PowerShell Ise, et créer un nouveau fichier:

Écrivez le code PRIVENIR pour la correspondance numérique et les cordes. Dans ce script, nous avons stocké un modèle dans le «$ message»Variable. Dans la deuxième ligne, ceci «$ message»La variable correspondra à sa valeur au«erreur”Regex en utilisant le«-correspondre»Opérateur. Nous avons également ajouté une ligne de code pour la correspondance du modèle numérique:

$ message = 'Il y a une erreur avec votre fichier'
$ Message -match 'Erreur'
'123-45-6789' -match '\ d \ d \ d- \ d \ d- \ d \ d \ d \ d'

Enregistrez ce fichier comme «TestFile1.PS1»PowerShell Script et l'exécutez en appuyant sur le«Courir" bouton.

Les deux modèles sont appariés avec le regex spécifié afin que cette expression revienne "vrai"Pour chaque cas.

Vous pouvez également faire correspondre un regex fois à un tableau. Pour démontrer cela, nous avons déclaré un tableau «$ data"Dans notre script. Ce tableau contient des valeurs numériques et de chaîne. Après avoir ajouté des valeurs au tableau, nous allons le faire correspondre à un regex: «\ d \ d \ d- \ d \ d- \ d \ d \ d \ d". Cette déclaration vérifiera si le tableau a des valeurs numériques avec le modèle spécifié dans l'expression régulière et l'imprimez sur votre terminal PowerShell.

$ data = @ (
"C'est un texte général"
"Le numéro de téléphone est le 333-99-2222"
"Une autre déclaration de texte"
"Numéro de téléphone 444-44-4444"
)
$ data -match '\ d \ d \ d- \ d \ d- \ d \ d \ d \ d'


L'opérateur de remplacement utilise l'expression digène pour la correspondance de motifs. Cet opérateur recherche un modèle puis le remplace par l'autre modèle spécifié dans la commande. Par exemple, dans le script ci-dessous, nous avons le «$ message"Variable contenant une valeur de chaîne"Salut, je m'appelle Sharqa ". Nous voulons remplacer «Sharqa" avec "Sharqa hameed". Avec le "-remplacer”Opérateur, nous rédigeons le modèle que nous voulons remplacer en premier lieu, et après cela, nous ajouterons le modèle que nous voulons être remplacé.

$ message = "Salut, je m'appelle Sharqa"
$ Message -Replace 'Sharqa', 'Sharqa Hameed'

Sauvegarde ça "TestFile1.PS1”Script PowerShell. L'exécution de ce script publiera la valeur du «$ message"Variable avec la chaîne remplacée"Sharqa" avec "Sharqa hameed".

Conclusion

Il existe de nombreux concepts de programmation où vous pouvez utiliser expirat ou où vous utilisez déjà Regex sans s'en rendre compte. Powershell fait un excellent travail d'intégration des fonctionnalités regex dans sa langue.

Avec les connaissances acquises de cet article, vous devriez être en mesure d'utiliser Regex dans PowerShell pour correspondre aux modèles numériques ou de texte lors de la recherche de phrases très complexes ou spécifiques. Nous vous avons également montré comment utiliser le quantificateur regex dans les scripts PowerShell.