[ DATE ] : 2024-01-06 02:30
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/