I stumbled across the following egrep expression:
egrep '^([^aieou]*[aieou]){5,7}[^aieou]*$' /usr/share/dict/words
on this page: http://matt.might.net/articles/sculpting-text
The expression is supposed to find the words that contain between 5 and 7 vowels.
I understand the first ^ meaning from the beginning of the line and the second ^ to negate any of the aieou followed by any number of characters and one of the aeiou between 5 and 7 times. But I did not get how the first and last expressions: [^aieou]