J'ai récemment entamé une discussion amicale avec Ghoti sur ce qui constitue une expression régulière dans les commentaires de ma réponse à cette question. J'ai affirmé que ce qui suit est une expression régulière:
`[Rr]eading[Tt]est[Dd]ata`
Ghoti n'était pas d'accord, affirmant qu'il s'agissait plutôt d'un fichier global. La page globale sur wikipedia affirme que (c'est moi qui souligne):
Les globes n'incluent pas de syntaxe pour l'étoile Kleene qui autorise plusieurs répétitions de la partie précédente de l'expression; elles ne sont donc pas considérées comme des expressions régulières, ce qui peut décrire un plus grand ensemble de langues régulières sur un alphabet fini donné.
Cependant, il n'y a aucune citation pour cette affirmation, indiquant qu'il ne s'agit que de l'opinion d'un éditeur de Wikipédia particulier.
La spécification Single UNIX ®, version 2 , stipule qu'une expression régulière de base (BRE) peut même être un seul caractère:
Un caractère ordinaire est un BRE qui correspond à lui-même: tout caractère du jeu de caractères pris en charge, à l'exception des caractères spéciaux BRE répertoriés dans BRE Caractères spéciaux.
Alors, quelle est la définition d'une expression régulière dans le monde * nix, et cette définition exclut-elle les globes de fichiers?
*
a deux significations différentes dans BRE et globs. Remarque: Je ne pense pas que le terme glob soit utilisé n'importe où dans la spécification POSIX - il s'appelle plutôt Pattern Matching et est décrit dans le chapitre sur le langage shell.
grep
,sed
etawk
. Vim utilise sa propre variété, tout comme Perl.