Expressions particulières
Description
Certaines expressions régulières ne sont pas faciles à produire, en particulier lorsqu’elles contiennent des listes de caractères (à inclure ou à exclure) qui contiennent des métacaractères utilisés pour définir ces mêmes listes : [ , ], - et ^. Ceux-ci ne peuvent pas être placés n’importe où, et doivent être combinés de façon à produire des expressions valides et conformes au résultat attendu. Lorsque l’on doit faire des essais afin de trouver la bonne façon d’écrire une expression régulière compliquée, la commande hl s’avère très efficace pour visualiser en couleurs les caractères qui correspondent à l’expression que l’on est en train de tester. Les commandes telles que :
$ echo chaîne | hl -e -3g expression_à_tester -3r ‘.+'
ou :
$ cat fichier | hl -e -3g expression_à_tester -3r ‘.+'
sont d’une grande utilité car elles affichent en vert les caractères sélectionnés, et en rouge ceux qui ne le sont pas, mettant ainsi en évidence les caractères correspondant à l’expression à tester.
Les cas présentés dans ce chapitre ne sont pas très courants, et il est probable que peu de lecteurs...
Expressions incluant des métacaractères
1. Caractères [ et ]
On souhaite écrire une expression désignant un caractère parmi [ ou ]. Deux combinaisons d’écritures existent, mais seule l’expression suivante est conforme :
[ ][ ]
L’expression :
[[]]
est inexacte car afin d’éviter les ambiguïtés d’interprétation sur le caractère ], celui-ci doit être le premier de la liste (sachant qu’une liste vide n’a aucun sens). S’il est le premier de la liste, c’est donc qu’il ne termine pas la liste, et qu’il doit être considéré comme un simple caractère. La deuxième expression signifie donc : un caractère [ (qui est le seul de la liste), suivi d’un caractère ].
2. Caractères [ et -
Pour désigner un caractère parmi [ et -, les deux possibilités suivantes sont valides :
[-[]
[[-]
car dans ces deux cas, le caractère - est considéré comme un simple caractère et non comme un intervalle entre deux caractères d’une plage. Il perd en effet cette signification lorsqu’il suit le caractère [ ou qu’il précède le caractère ].
3. Caractères [ et ^
Ici, une seule expression est possible pour désigner ce que l’on souhaite, c’est la suivante :
[[^]
L’autre possibilité...
Expressions excluant des métacaractères
1. Caractère ]
On souhaite désigner n’importe quel caractère, à l’exception de ]. Ici, aucune complexité car il n’y a qu’une seule possibilité :
[^]]
2. Caractère -
On souhaite désigner n’importe quel caractère, à l’exception de -. Là encore, aucune complexité car il n’y a qu’une seule possibilité :
[^-]
3. Caractère [
On souhaite désigner n’importe quel caractère, à l’exception de [. Toujours pas de complexité car il n’y a qu’une seule possibilité :
[^[]
4. Caractère ^
On souhaite désigner n’importe quel caractère, à l’exception de ^. Toujours aucune complexité, nous n’avons pas le choix car il n’y a qu’une seule possibilité :
[^^]
5. Caractères [ et ]
On souhaite désigner n’importe quel caractère, à l’exception de [ et ]. Ici, plusieurs possibilités existent du fait que l’on a plusieurs caractères à placer dans la liste, mais seule la suivante est correcte :
[^][]
L’autre possibilité :
[^[]]
n’a pas la même signification. Elle désigne un caractère quelconque à l’exception...