regex
Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
| regex [2014/02/28 08:21] – luc | regex [2024/12/10 21:26] (Version actuelle) – luc | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| + | ===== Regex ou relations rationnelles ===== | ||
| + | Dans ce chapitres, il ne s'agit pas d'une conf, mais d'un outil qui est utilisé ici où là, notamment dans la conf de [[nginx]]. | ||
| + | |||
| + | |||
| + | === Récapitulatif === | ||
| + | |||
| + | ^ élément | ||
| + | | | **Positionnement** | ||
| + | | %%^%% | début de la chaîne | ||
| + | | $ | fin de la chaîne | ||
| + | | | ** Quantificateurs** | ||
| + | | * | répétition du motif précédent, | ||
| + | | ? | répétition du motif précédent, | ||
| + | | + | répétition du motif précédent, | ||
| + | | {N} | répétition du motif précédent N fois | | ||
| + | | | **Structurants** | ||
| + | | ( ) | Permet de délimiter un motif à évaluer en priorité | ||
| + | | [ ] | définit une classe, ce qui correspond à un motif dans le motif (voir le paragraphe dédié) | ||
| + | | %%|%% | permet une alternative entre ce qui est d'un côté ou de l' | ||
| + | | | **Spéciaux** | ||
| + | | . | un caractère, quelqu' | ||
| + | | \ | permet d' | ||
| + | | ! | euh | | ||
| + | |||
| + | | | **Les raccourcis** | ||
| + | | \d | indique un chiffre = [0-9] | | ||
| + | | \D | indique ce qui n'est pas un chiffre | ||
| + | | \w | indique un caractère alphanumérique = [a-ZA-Z0-9_] | ||
| + | | \W | indique ce qui n'est pas un caractère alphanumérique (le contraire de \w) | | ||
| + | | \t | indique une tabulation | ||
| + | | \n | indique une nouvelle ligne | | ||
| + | | \r | indique un retour chariot | ||
| + | | \s | indique un espace blanc | | ||
| + | | \S | tout caractère qui n'est pas un whitespace (=espace) (testé en python) | ||
| + | |||
| + | |||
| + | === Principe === | ||
| + | |||
| + | Le concept est de permettre la sélection d' | ||
| + | |||
| + | === Classes === | ||
| + | == alternative == | ||
| + | Une classe est délimité par des '' | ||
| + | |||
| + | == plage == | ||
| + | On peut aussi définir des intervalles avec '' | ||
| + | |||
| + | On peut cumuler la notion de plage avec la notion d' | ||
| + | |||
| + | == négation dans une classe == | ||
| + | Elle est marquée par le caractère '' | ||
| + | |||
| + | == échappement == | ||
| + | Dans une classe, l' | ||
| + | |||
| + | === Quantificateurs === | ||
| + | |||
| + | ''?'', | ||
| + | |||
| + | Les '' | ||
| + | |||
| + | === Groupes === | ||
| + | |||
| + | CE qui suit fonctionne avec la lib re (regex) de python | ||
| + | |||
| + | les groupes sont délimités par les parenthèse '' | ||
| + | |||
| + | On peut avoir des groupes nommés pour les réutiliser plus facilement, notamment en python : | ||
| + | < | ||
| + | (? | ||
| + | # permet de trouver un groupe 4 digits consécutifs, | ||
| + | </ | ||
| + | |||
| + | On peut également se servir des groupes pour avoir des précurseurs (non capturés) qui doivent être présents (ou absents), immédiatement suivis par ce qu'on veut capturer, par exemple : | ||
| + | < | ||
| + | # IMG-20201025.jpg | ||
| + | (?< | ||
| + | |||
| + | # (?< | ||
| + | # ainsi, on aura bien 2020 de capturé dans le groupe year, et non par 1025 ou autre suite de 4 chiffres | ||
| + | </ | ||
| + | |||
| + | === Renommer === | ||
| + | |||
| + | Dans certaines applications, | ||
| + | |||
| + | <code bash> | ||
| + | perl-rename -n ' | ||
| + | </ | ||
| + | |||
| + | On peut vouloir réutiliser des bouts de chaines sélectionnés dans la regex2. Dans ce cas, il faut former des groupes à l'aide des '' | ||
| + | |||
| + | |||
| + | |||
| + | === Assertions === | ||
| + | |||
| + | Il s'agit de test qui sont effectués sur les caractères précédents ou suivant les caractères en cours d' | ||
| + | |||
| + | '' | ||
| + | '' | ||
| + | |||
| + | Bref, c'est encore à développer | ||
