Regex étendues dans grep, sed, Vim
Par défaut, grep, sed et Vim acceptent des expressions régulières "basiques" (BRE). Pour utiliser des expressions régulières "étendues" (ERE), il faut leur passer les options suivantes :
grep -E
-
grep -P
pour des regex encore plus étendues, les regex compatibles avec Perl (PCRE) -
sed -E
(ou -r mais l'option -E est dans la norme POSIX, voir la doc de sed) - Vim, mettre
\v
(minuscule) devant la regex (v pour very magic, voir:help magic
)
Ces caractères sont spéciaux en ERE / doivent être backslashés en BRE :
?
+
()
{}
|
Exemple
Dans cette page, pour trouver un caractère non-numérique suivi d'un ou plusieurs espaces suivi(s) de grep ou sed :
- en BRE :
[^0-9]\s\+\(grep\|sed\)
- en ERE :
[^0-9]\s+(grep|sed)
- en PCRE :
\D\s+(grep|sed)
- variante "very magic" dans Vim :
/\v\D\s+(grep|sed)
Note au passage : Vim supporte la notation \d
et \D
dans son mode de base, contrairement à grep et sed.
Le super tableau qui résume tout : Standardisation et application sur Wikipédia.