next up previous contents
suivant: Multi-niveau (Job control) monter: Expressions régulières précédent: Introduction   Table des matières

Syntaxe

Les caractères représentés dans un motif d'expression remplaçante devront être existants et identiquement placés par rapport aux autres caractères présents dans le motif pour que la partie de phrase soit considérée comme adéquate. Par exemple, en supposant que la phrase est Le lièvre saute par-dessus la tortue25, les motifs suivants provoqueront un succès:

Au contraire, les motifs suivants ne donneront pas de succès:

Certains caractères spéciaux permettent d'exprimer des requêtes plus complexes, comme par exemple: donnez-moi toutes les phrases contenant abc puis n'importe quel caractère, puis def. Pour ce faire, le joker ? est à employer. Notez que cela n'est valable que pour le shell. En général, pour une expression régulière, le caractère . joue ce rôle.

Des requêtes telles que donnez-moi toutes les phrases contenant abcd, puis une suite de caractères qui me sont indifférents et dont le nombre m'est égal, puis def sont exprimables à l'aide du caractère *. De nouveau, lors d'expressions régulières générales (non pas au niveau du shell), il faut faire précéder l'étoile du caractère que l'on désire voir multiplié un nombre quelconque de fois. Par exemple .* remplace n'importe quelle suite de caractères.

Ces deux caractères spéciaux sont nommés des jokers et sont connus dans beaucoup de systèmes d'exploitation. Il est intéressant d'en connaître quelques autres:

$\backslash$
Permet d'annuler l'effet spécial du caractère qui le suit. Cela peut être utilisé, par exemple, pour demander un point (alors qu'un point en général peut remplacer n'importe quel caractère.)
$\wedge$
Permet de demander une comparaison forcée au début de la ligne. Notez que pour que ce caractère ait cette signification spéciale il doit débuter la ligne. Notez également qu'au début d'un ensemble, il inverse logiquement celui-ci (le ``non'' logique).
[]
Permet de donner un ensemble de valeurs possibles. Par exemple, pour la requête donnez-moi une phrase commençant par abc, puis un seul chiffre (obligatoire), puis def et n'importe quoi, on dirait $\wedge$abc[0-9]def.
()
Les parenthèses permettent de grouper logiquement une expression.

Les commandes grep et egrep permettent de rechercher des motifs dans un ou plusieurs fichiers. Voici un exemple (relativement complexe) d'utilisation des expressions régulières. Le but est d'afficher toutes les lignes d'un fichier indiqué en paramètre, sauf celles qui commencent par d2/local, d3/divers ou var/adm/tmp.

egrep -v "$\wedge$d2/local|$\wedge$d3/divers|$\wedge$var/adm/tmp" fichier

Le symbole barre verticale, ou encore | permet dans ce cas de spécifier l'alternative, et l'argument -v de la commande egrep permet d'inverser la proposition.


Tableau: Résumé des caractères spéciaux pour les regexp
Caractère(s) Signification
. caractère quelconque (sauf fin de ligne \n)
$ fin de ligne (\n)
^ début de ligne sauf dans [] où il signifie ``complément'' (négation logique)
[] un des caractères contenus dans les crochets
- dans [] signifie de ... à ...
? l'expression régulière précédente est optionnelle
* répétition $\geq 0$ du caractère précédent (éventuellement vide).
+ répétition $> 0$ (non vide)
| alternative entre deux expressions
\c supprime la signification spéciale du caractère `c'
() groupe des expressions



Tableau: Résumé des caractères spéciaux pour le shell
Caractère(s) Signification
[] un des caractères contenus dans les crochets
- dans [] signifie de ... à ...
^ dans [] signifie ``complément'' (NON)
? remplace n'importe quel caractère
* remplace n'importe quelle suite (éventuellement vide)
\c supprime la signification spéciale du caractère `c'



next up previous contents
suivant: Multi-niveau (Job control) monter: Expressions régulières précédent: Introduction   Table des matières
Marc SCHAEFER 2003-03-01