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 [2016/11/29 12:42] – 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 |