Первое регулярное выражение: r'[a-z]+[A-Z]+'
соответствует строке, начинающейся с одной или нескольких строчных букв, за которыми следуют одна или несколько заглавных букв.
Второе регулярное выражение r'[A-Z]+'
соответствует строке, начинающейся с одной или нескольких заглавных букв.
Вы можете объединить их в: r'[a-z]?[A-Z]+'
, что соответствует строке, начинающейся с 0 или 1 строчной буквы, за которой следует одна или несколько заглавных букв.
Во-вторых, порядок параметров при вызове re.match()
неправильный. Первый параметр должен быть регулярным выражением, второй должен быть строкой: re.match(exp,word)
Рабочая реализация:
import re
word = input()
exp = r'[a-z]?[A-Z]+'
if bool(re.match(exp,word)):
print(word[0].upper() + word[1:].lower())
else:
print(word)
Демо: https://repl.it/@glhr/55438600