Ele procura zero ou mais consoantes ( [^aieou]* ) seguido por 5 a 7 vogais ( ([aieou]){5,7} ) seguidas por zero ou mais consoantes ( [^aieou]* ). Toda a expressão regular está ancorada no início da linha ( ^ ) e no final, ( $ ).
Exemplo
$ egrep '^([^aieou]*[aieou]){5,7}[^aieou]*$' \
/usr/share/dict/words | head -10
abacinate
abacination
abacterial
abaisance
abalation
abalienate
abalienated
abalienating
abalienation
abandonable
Detalhes
Então, quando ele corresponde a essa primeira palavra, abacinate , a primeira letra a tem 0 consoantes à esquerda, então combinamos essa parte.
Como as vogais adicionais com zero ou mais consoantes são encontradas à esquerda e / ou à direita, também correspondemos a essas situações. Se encontrarmos de 5 a 7 deles, então combinamos.