As expressões regulares permitem que você use Expressão de cabeçalho para representar o conjunto de elementos de agrupamento. A sintaxe para Bracket Expression é [...] , onde você pode colocar em ... qualquer um dos elementos de intercalação, símbolos de agrupamento, classes de equivalência, classes de caracteres ou expressões de intervalo.
O que você usa alpha é um nome de classe de caractere, criado pelo nome da classe de local entre [: e :] . Então, você usou a expressão da classe de caracteres [:alpha:] entre Bracket Expression [[:alpha:]] .
A expressão de classe de caractere não é igual à expressão de intervalo [a-zA-Z] em algumas localidades. Veja o melhor exemplo que você pode ver:
$ LC_ALL=en_US.utf8 bash -c 'case b in [A-Z]) echo yes; esac'
yes
enquanto usa a classe de personagem, não deu nada:
$ LC_ALL=en_US.utf8 bash -c 'case b in [[:upper:]]) echo yes; esac'
O caret ^ , se colocado no início de Bracket Expression , negará a correspondência da expressão. [^[:alpha:]] corresponderá a todos os caracteres que não pertencem à classe [:alpha:] characters:
$ case 1 in [^[:alpha:]]) echo yes;; esac
yes