BashCorrespondance de motif et expressions régulières


Syntaxe

  • $ shopt -u option # Désactiver l'option intégrée de Bash
  • $ shopt -s option # Activer l'option intégrée de Bash

Remarques

Classes de personnages

Les classes de caractères valides pour le glob [] sont définies par le standard POSIX:

alnum alpha ascii blank cntrl digit graphe inférieur imprimer espace ponctuel mot supérieur xdigit

À l'intérieur de [] plus d'une classe ou plage de caractères peut être utilisée, par exemple,

$ echo a[a-z[:blank:]0-9]*

correspondra à tout fichier commençant par a et suivi d'une lettre minuscule ou d'un blanc ou d'un chiffre.

Il faut toutefois garder à l’esprit qu’un [] glob ne peut être totalement nié et pas seulement des parties de celui-ci. Le caractère négatif doit être le premier caractère après l'ouverture [ , par exemple, cette expression correspond à tous les fichiers qui ne commencent pas par a

$ echo [^a]*

Ce qui suit correspond à tous les fichiers qui commencent par un chiffre ou un ^

$ echo [[:alpha:]^a]*

Il ne correspond à aucun fichier ou un dossier qui commence par la lettre , sauf un a parce que le ^ est interprété comme un littéral ^ .

Caractères de globes échappant

Il est possible qu'un fichier ou un dossier contienne un caractère glob dans le cadre de son nom. Dans ce cas, un glob peut être échappé avec un \ précédent pour une correspondance littérale. Une autre approche consiste à utiliser '' guillemets doubles "" ou simples '' pour traiter le fichier. Bash ne traite pas les globes entourés par "" ou '' .

Différence avec les expressions régulières

La différence la plus significative entre les globes et les expressions régulières est qu'une expression régulière valide nécessite un qualificatif ainsi qu'un quantificateur. Un qualificatif identifie ce qui doit correspondre et un quantificateur indique à quelle fréquence il doit correspondre au qualificatif. Le RegEx équivalent au * glob est .*. signifie n'importe quel caractère et * signifie zéro ou plusieurs correspondances du caractère précédent. L'équivalent RegEx pour le ? glob est .{1} . Comme avant, le qualificatif . correspond à n'importe quel caractère et le {1} indique qu'il doit correspondre exactement au qualificateur précédent. Cela ne doit pas être confondu avec le ? quantifier, qui correspond à zéro ou une fois dans un RegEx. Le [] glob est utilisable de la même manière dans un RegEx, à condition qu'il soit suivi d'un quantificateur obligatoire.

Expressions régulières équivalentes

Glob RegEx
* .*
? .
[] []

Correspondance de motif et expressions régulières Exemples Liés