Recientemente tuve una discusión amistosa con Ghoti sobre lo que constituye una expresión regular en los comentarios a mi respuesta a esta pregunta. Afirmé que lo siguiente es una expresión regular:
`[Rr]eading[Tt]est[Dd]ata`
Ghoti no estuvo de acuerdo, alegando que es un problema de archivo. La página global en wikipedia afirma que (el énfasis es mío):
Los globos no incluyen sintaxis para la estrella de Kleene que permite múltiples repeticiones de la parte anterior de la expresión; por lo tanto, no se consideran expresiones regulares, que pueden describir un conjunto más grande de idiomas regulares sobre cualquier alfabeto finito dado.
Sin embargo, no hay citas para esta afirmación, lo que indica que es solo la opinión de un editor de wikipedia en particular.
La especificación The Single UNIX ®, versión 2 , establece que una expresión regular básica (BRE) puede ser incluso un solo carácter:
Un carácter ordinario es un BRE que coincide: cualquier carácter del conjunto de caracteres admitido, excepto los caracteres especiales BRE enumerados en los caracteres especiales BRE.
Entonces, ¿cuál es la definición de una expresión regular en el mundo * nix, y esa definición excluye los globos de archivos?
*
tiene dos significados diferentes en BRE y globs. Nota: No creo que el término glob se use en ninguna parte de la especificación POSIX; en su lugar, se llama Pattern Matching y se describe en el capítulo del lenguaje de shell.
grep
,sed
, yawk
. Vim usa su propia variedad, al igual que Perl.