Я бы использовал re.findall
с шаблоном (?<=[^\Waeiou])[aeiou]+(?![aeiou])
:
inp = "abaabaabaabaae"
matches = re.findall(r'(?<=[^\Waeiou])[aeiou]+(?![aeiou])', inp, flags=re.IGNORECASE)
print(matches)
Это печатает:
['aa', 'aa', 'aa', 'aae']
Вот объяснение шаблона регулярного выражения:
(?<=[^\Waeiou]) assert that what precedes is any word character, excluding a vowel
this also exlcudes the start of the input
[aeiou]+ match one or more vowel characters
(?![aeiou]) assert that what follows is not a vowel (includes end of string)