Let's look at the regex for a moment. There are some things here which have been briefly mentioned but not fully discussed.
>>> x = re.compile("^\S{3,5}.[aeiou]")
When forming a regular expression, it is important to remember that every pattern matching symbol equals exactly one character in the string to be matched. The only time this 1-to-1 relationship changes is when you put quantifiers in curly braces or bracket alternatives together in a square braces.
If you find yourself having difficulty in formulating the appropriate regex forumla, write it out long-style -- on-screen or on paper. Then, take it one character at a time. Even if you want more than one match, put each one down explicitly.
So if we want to begin with a consonant, we write:
^\SThen, because we want three, we write out the three consonants:
^\S\S\S
Keep in mind here that these three symbols equate to three characters. If we then want the fifth character of the string to be a vowel, we need to enter a filler for the fourth position. Enter the period/full stop. Remember, the period/full stop equates to any character save the newline character ("\n").
^\S\S\S.Then, if we want to add the vowels, we need to decide whether we want to include "y". Assuming no, we can place all the vowels together between a pair of square brackets and append them to the formula:
^\S\S\S.[aeiou]
