Prenez, par exemple, cette commande:
find . -regex ".*\.\(cpp\|h\)"
Cela trouvera tous les fichiers .h et .cpp dans votre répertoire. Le caractère de période '.' dans les expressions régulières signifie généralement "n'importe quel caractère". Pour qu'il ne corresponde qu'à une période réelle, vous devez l'échapper en utilisant la barre oblique inverse "\".
Dans ce cas, étant donné un caractère avec une signification spéciale, vous devez lui échapper pour obtenir le caractère réel qu'il représente.
Maintenant, prenez la parenthèse et la barre "ou", étant les caractères '(', ')' et '|', respectivement. Celles-ci ont également des significations spéciales, utilisées pour regrouper les expressions régulières. Cependant, pour obtenir la signification spéciale, les caractères doivent être échappés à l'aide de la barre oblique inverse! Sans la barre oblique inverse, les caractères ont la signification du caractère réel qu'ils représentent.
Pourquoi est-ce que '.' traité différemment de '(', ')' et '|'?
la source