Mémento expressions régulières
Sous Unix, grep, sed, et awk utilisent les expressions régulières. Tout comme d'ailleurs, la très grande majorité des langages de programmation ou des éditeurs texte.
Sur cette page
- Le point:
.
- Crochets:
[xyz]
- Crochets avec exclusion:
[^xyz]
- Crochets avec plage:
[a-z]
- Astérisque:
*
- Symbole d'addition:
+
- Point d'interrogation:
?
- Accolades:
{}
- Parenthèses:
()
- Parenthèses sans capture:
(?: )
- Parenthèses avec pipe:
(abc|xyz)
- Caractère d'échappement:
\
- Extraire une date de type AAAA-MM-JJ
- Extraire un titre de type markdown ou gemtext
- Extraire le domaine d'une adresse courriel
Motifs de base
Le point: .
Il permet de sélectionner n'importe quel caractère: lettres, chiffres, ponctuations, les espaces... tout.
/ . /g
ABCD 1234 !@#$
Crochets: [xyz]
Si on cherche une chaîne de caractères avec des lettres qui divergent, on utilise les crochets.
/ foi[sex] /g
fois, foie, foil, foix
Crochets avec exclusion: [^xyz]
Inversement, si je voulais plutôt exclure les mots commençant par foi mais ce terminant pas s, e ou x, j'utliserais l'accent circonflexe comme premier caractère suivant le crochet de gauche.
/ foi[^sex] /g
fois, foie, foil, foix
Crochets avec plage: [a-z]
Pour capturer une séquence de caractères dans une chaîne on utilise le trait d'union (range expression).
Cette expression tient compte de la casse.
/ [m-q] /g
abcdefghijklmnopqrstuvwxyz
C'est idem avec les chiffres...
/ [5-7] /g
01234567899876543210
Astérisque: *
Le caractère précédent l'astérisque peut être absent ou présent de multiple fois.
/ cré* /g
crevées créées
Symbole d'addition: +
Dans ce cas-ci, nous voulons indiquer que le caractère précédent le +
est
présent une fois ou possiblement plus.
/ cré+ /g
crevées créées
Point d'interrogation: ?
Un caractère est rendu facultatif s'il est suivi par un point d'interrogation.
/ Cou?lombe /g
Coulombe ou Colombe
Accolades: {}
Préciser par n le nombre de fois qu'un caractère peut être répété.
/ Bo{3}uh /g
Booouh Booooouh!
On peut aussi définir un nombre minimal de répétition en ajoutant une virgule à la suite de n.
/ Bo{3,}uh /g
Booouh Booooouh!
Pour déterminer une fourchette, il suffit d'ajouter, suivant la virgule, une valeur qui correspond à la limite recherchée.
/ Bo{1,3}uh /g
Bouh Boouh Booouh Booooouh!
Parenthèses: ()
Les parenthèses sont utilisées pour grouper des expressions.
/ (blabla) /g
Bla, bla, blabla, blabla...
Un groupe peut être référencé par une barre oblique inversé suivie
d'un chiffre: \n
.
/ (bla) \1, (blabla), \2 /g
Ici deux groupes se retrouvent référencés...
bla bla, blabla, blabla
Parenthèses sans capture: (?: )
Ignorer un groupe parmis d'autres.
/ (?:bla) (blabla) \1 /g
bla bla blabla blabla
Parenthèses avec pipe: (abc|xyz)
Choisir par alternance parmi plusieurs expressions.
/ (châ|ra|gâ)teau|camion /g
Au château il glace le gâteau à l'aide d'un rateau... Et au loin, un camion.
Caractère d'échappement: \
Pour inclure des caractères qui sont d'abord réservés à la conception aux expressions régulières il faut les précéder du caractère d'échappement.
/ (\*|\.) /g
Sélectionner un astérisque* et trois points...
Quelques exemples pouvant être utiles
Extraire une date de type AAAA-MM-JJ
Ici nous avons trois fichiers classés du plus récent au moins récent et nous voulons extraire les dates qui se trouvent au début des noms...
/ ([0-9]{4})(-)([0-9]{2})(-)([0-9]{2}) /g
- 2024-03-12-nam-euismod-tellus-id-erat.md
- 2024-02-21-sed-id-ligula-quis-est-convallis-tempor.md
- 2024-01-05-Mauris-ac-felis-vel-velit-tristique-imperdiet.md
Extraire un titre de type markdown ou gemtext
Récupérer les titres sans les caractères #
et l'espace
précédant le premier mot.
/ [^#{1,6}\s].+ /g
# Nullam eu ante vel est convallis dignissim
## Aliquam erat volutpat
### Cras placerat accumsan nulla
Extraire le domaine d'une adresse courriel
/ (?<=@)(.*)$ /g
Vous pouvez me joindre à l'adresse suivante: hs0ucy@soucy.cc.