Это можно сделать просто, используя понимание списка, избегая необходимости использовать регулярные выражения.
names_only_words = [x.strip() for x in my_list]
Удалит пробелы с концов строк, но не из середины:
['Cat Alfred', 'Dog Austin Power', 'Very very very lazy frog']
Если вы действительно хотите сделать это с регулярным выражением, сработает следующее:
pattern = "^\s*(.*?)\s*$"
names_only_words = [(re.match(pattern, name).group(1)) for name in my_list]
Вместо первоначального подхода замены пробелов на концах ничем, он захватывает все между пробелами в концы.