Forums d'entraide informatique - Astuces - Conseils
Des experts à votre écoute pour tous vos dysfonctionnements
Vous n'êtes pas identifié.
#1 12-08-2008 18:44:45
- Admin
- Administrateur
- Date d'inscription: 30-07-2008
- Messages: 683
Les expressions régulières sous Linux
Tout d’abord voici une définition des expressions régulières que j’emprunte au site : Wikipédia
Les expressions régulières, aussi appelées expressions rationnelles (traduction controversée de l’anglais regular expressions) sont une famille de notations compactes et puissantes pour décrire certains ensembles de chaîne de caractères.
Ces notations sont utilisées par plusieurs éditeurs de texte et utilitaires (particulièrement sous Unix), par exemple Emacs, sed et awk, pour parcourir de façon automatique des textes à la recherche de morceaux de texte ayant certaines formes, et éventuellement remplacer ces morceaux de texte par d’autres
L’origine et la justification mathématique des expressions régulières se situent dans la théorie des automates et des langages formels. Ces champs d’étude couvrent des modèles de calcul (automates) et des façons de décrire et de classifier des langages formels. Un langage formel est ici simplement défini comme un ensemble de chaînes de caractères : celles que le langage accepte comme bien formées.
Dans les années 1940, Warren Mcculloch et Walter Pitts ont décrit le système nerveux en modélisant les neurones par des automates simples. Un mathématicien, Stephen Kleene, a ensuite décrit ces modèles en termes d’ensembles réguliers, notion qu’il a introduite avec une certaine notation. Ken Thompson a implémenté cette notation dans l’éditeur qed, puis l’éditeur ed sous Unix, et finalement dans grep. Depuis lors, les expressions régulières ont été largement utilisées dans les utilitaires ainsi que dans les langages de programmations nés sous Unix, tels qu’expr, awk, Emacs, Perl, Python... Une bonne partie d’entre eux reposent sur la bibliothèque regex, créée par Henry Spencer.
Les expressions régulières correspondent aux grammaires de type 3 de la hiérarchie de Chomsky ; elles peuvent donc être utilisées pour décrire la morphologie d’une langue.
Il faut bien reconnaître que la description des expressions régulières, que je nommerai "regexp" dans la suite de cet article au sein des pages man d’unix SCO est pour le moins abscons, il ne fait pas honneur à ce merveilleux outil qui peut vous rendre de nombreux services dans votre vie de développeur ou d’administrateur système.
Une étude approfondie des regexp dépasserait le cadre de cet article, de fait je me contenterai de vous décrire la syntaxe des regexp et de fournir les exemples correspondants.
Pour de plus amples précisions, je vous renvoie à l’excellent ouvrage de Jeffrey E. F. Friedl distribué par la société O’reilly : Maîtrise des expressions régulières
Les expressions régulières sont composées de deux types de caractères :
* Des caractères spéciaux appelés métacaractères (*, [],+, etc).
* Des caractères normaux appelés caractères littéraux.
La combinaison de ces caractères forme une expression.
La liste des métacaractères qui suit n’est pas exhaustive, elle évolue en fonction du langage que vous utilisez.
Les métacaractères courant :
Eléments pour reconnaîssance d’un caractère unique
Métacaractère Nom Reconnaît
. point n’importe quels caractères
[...] classe de caractères tous caractères parmi ceux énumérés
[^..] classe de caractères complémentée tous caractères exceptés ceux énumérés
\car caractère échappé lorsque car est un métacaractère, ou que la combinaison échappée n’est pas spéciale par ailleurs, reconnaît le caractère littéral car
Eléments pour reconnaîssance les positions
Métacaractère Nom Reconnaît
^ circonflexe la position en début de ligne
$ dollar la position en fin de ligne
Eléments quantificateurs
Métacaractère Nom Reconnaît
? point d’interrogation un élément autorisé, mais optionnel
* étoile n’importe quel nombre autorisé, mais optionnel
+ plus un élément requis,éléments supplémentaires optionels autorisés
Eléments Autres
Métacaractère Nom Reconnaît
| ou, barre reconnaît l’un ou l’autre des termes qu’il sépare
(...) parenthèse utiliser pour limiter la portée de |, ainsi que pour d’autres usages
Classe de Caractères
Métacaractère Reconnaît
[ :alnum :] caractères alphanumériques (équivalent à [A-Za-z0-9])
[ :alpha :] caractères alphabétiques ([A-Za-z])
[ :blank :] caractères d’espace et de tabulation
[ :cntrl :] caractères de contrôle
[ :digit :] chiffre ([0-9])
[ :graph :] tout caractère affichable (pas d’espace, de caractère de contrôle, etc.)
[ :lower :] caractère alphabétique minuscules
[ :print :] comme [ :graph :], mais avec l’espace en plus
[ :punct :] caractère de ponctuation
[ :space :] caractère d’espacement
[ :upper :] caractère alphabétique majuscule
[ :xdigit :] caractère hexadécimal
Cordialement
L'équipe Parisdepannage.fr
Hors ligne
2008 Parisdepannage |Plan du site|Forums |Blog|Lexique ![]()