import re
tests = {'matches': ['we:aanyoh', 'hiru:atghigu', 'yo:ubeki'], 'no match':
    ['wz:ubeki', 'we:a anyoh', 'yo:ubek', 'hiru:atghiguu']}
for k, v in list(tests.items()):
    print(k)
for e in v:
    s = re.sub('(?i)(\\b\\w+[aeiou]):((?:[aeiou][^aeiou\\s\\W]*){3}\\b)',
        '\\1\\2', e)
print('\t{} > {}'.format(e, s))
Python RegEx с использованием re.sub с несколькими шаблонами