Bash Pattern Filter

Une expression régulière ou motif ou regex (de l’anglais regular expression) est une chaîne de caractères qui décrit, selon une syntaxe précise, un ensemble de chaînes de caractères possibles. Elles sont issues des théories mathématiques des langages formels.

Les expressions régulières peuvent être testées via https://regex101.com/

Tableau des correspondances

Expressions rationnelles courantes :

Pattern Correspondance
* Toute chaîne de zéro caractère ou plus
? Tout caractère unique
+ 1 ou plusieurs occurrences
. N’importe quel caractère
^ Marque le début de la chaîne ou de la ligne
$ Marque la fin de la chaîne ou de la ligne
| Ou
{...} Nombre de caractères avant le critère : a{2} deux occurrences de “a”, a{1,10} entre 1 et 10, a{,10} jusqu’à 10 fois (de 0 à 10), a{3,} au moins 3 fois (de 3 à l’infini)
{1..9} De 1 à 9
[abc ] N’importe quel caractère entre crochets
[!abc] Tout caractère non compris etre crochets
[^abc] Tout caractère non compris entre crochets
[[:alpha:]] n’importe quelle lettre
[[:digit:]] n’importe quel chiffre
[[:xdigit:]] caractères hexadécimaux
[[:alnum:]] n’importe quelle lettre ou chiffre
[[:space:]] n’importe quel espace blanc
[[:punct:]] n’importe quel signe de ponctuation
[[:lower:]] n’importe quelle lettre en minuscule
[[:upper:]] n’importe quelle lettre capitale
[[:blank:]] espace ou tabulation
[[:graph:]] caractères affichables et imprimables
[[:cntrl:]] caractères d’échappement
[[:print:]] caractères imprimables exceptés ceux de contrôle

Plus complet : https://fr.wikibooks.org/wiki/Programmation_Bash/Regex

Expressions rationnelles Unicode

Pattern Correspondance
\\ Antislash
\C Caractère spécial C non interprété : [ ] { } ( ) ? * . : \ & - ^ $
\Q...\E Séquence littérale non interprétée
\0xxx Caractère Unicode (1 à 3 chiffres octaux)
\a Alarme (ASCII 07)
\A Début de chaîne
\b Caractère de début ou fin de mot
\B Caractère qui n’est pas début ou fin de mot
\cX Caractère de contrôle ASCII (X étant une lettre)
\d Chiffre
\D Non chiffre
\e Escape (ASCII 1B)
\f Form-feed (ASCII 0C)
\G Fin de la correspondance précédente
\h Espace blanc horizontal
\H Non espace blanc horizontal [^\h]
\n Fin de ligne
\pL, \p{L}, \p{Letter} Lettre (dans tout langage)
\r Retour charriot
\R Retour à la ligne, équivaut à \u000D\u000A
\s Caractères espace [ \t\n\x0B\f\r]
\S Non caractères espace [^\s]
\t Tabulation
\v Espace blanc vertical [\n\x0B\f\r\x85\u2028\u2029]
\V Non espace blanc vertical [^\v]
\w Caractère alphanumérique : lettre, chiffre ou underscore
\W Caractère qui n’est pas lettre, chiffre ou underscore
\xxx Caractère Unicode (2 chiffres hexadécimaux)
\x{xx...x} Caractère Unicode (chiffres hexadécimaux)
\X Caractère Unicode du groupe de graphèmes étendu

Exemples

Quelques exemples triviaux :

# echo config_{1..3}.txt
config_1.txt
config_2.txt
# echo config_{A..F}{1..5}.txt
config_A1.txt
config_A2.txt
config_A3.txt
config_A4.txt
config_A5.txt
config_B1.txt
config_B2.txt
config_B3.txt
[...]
config_E4.txt
config_E5.txt
config_F1.txt
config_F2.txt
config_F3.txt
config_F4.txt
config_F5.txt
# echo config_{A..F}{8,5}.txt
config_A8.txt
config_A5.txt
config_B8.txt
config_B5.txt
config_C8.txt
config_C5.txt
config_D8.txt
config_D5.txt
config_E8.txt
config_E5.txt
config_F8.txt
config_F5.txt
# echo config_{2023-{A..F},1,5}.txt
config_2023-A.txt
config_2023-B.txt
config_2023-C.txt
config_2023-D.txt
config_2023-E.txt
config_2023-F.txt
config_1.txt
config_5.txt
# mkdir -p tests/Projet-{A,B,C}/{2020..2023}/{Old,Version{1..5}}
# tree tests/
tests/
├── Projet-A
│ ├── 2020
│ │ ├── Old
│ │ ├── Version1
│ │ ├── Version2
│ │ ├── Version3
│ │ ├── Version4
│ │ └── Version5
│ ├── 2021
│ │ ├── Old
│ │ ├── Version1
│ │ ├── Version2
│ │ ├── Version3
│ │ ├── Version4
│ │ └── Version5
│ ├── 2022
│ │ ├── Old
│ │ ├── Version1
│ │ ├── Version2
│ │ ├── Version3
│ │ ├── Version4
│ │ └── Version5
│ └── 2023
│ ├── Old
│ ├── Version1
│ ├── Version2
│ ├── Version3
│ ├── Version4
│ └── Version5
├── Projet-B
│ ├── 2020
│ │ ├── Old
│ │ ├── Version1
│ │ ├── Version2
│ │ ├── Version3
│ │ ├── Version4
│ │ └── Version5
│ ├── 2021
│ │ ├── Old
│ │ ├── Version1
│ │ ├── Version2
│ │ ├── Version3
│ │ ├── Version4
│ │ └── Version5
│ ├── 2022
│ │ ├── Old
│ │ ├── Version1
│ │ ├── Version2
│ │ ├── Version3
│ │ ├── Version4
│ │ └── Version5
│ └── 2023
│ ├── Old
│ ├── Version1
│ ├── Version2
│ ├── Version3
│ ├── Version4
│ └── Version5
└── Projet-C
├── 2020
│ ├── Old
│ ├── Version1
│ ├── Version2
│ ├── Version3
│ ├── Version4
│ └── Version5
├── 2021
│ ├── Old
│ ├── Version1
│ ├── Version2
│ ├── Version3
│ ├── Version4
│ └── Version5
├── 2022
│ ├── Old
│ ├── Version1
│ ├── Version2
│ ├── Version3
│ ├── Version4
│ └── Version5
└── 2023
├── Old
├── Version1
├── Version2
├── Version3
├── Version4
└── Version5

Documentation

https://fr.wikibooks.org/wiki/Programmation_Bash/Regex
https://regex101.com/

> Partager <