Регистрационные знаки

Что нужно сделать

В России для транспорта применяются регистрационные знаки нескольких видов.

Общее в них то, что они состоят из цифр и букв. Причём используются только 12 букв кириллицы, имеющих графические аналоги в латинском алфавите: А, В, Е, К, М, Н, О, Р, С, Т, У и Х.

У частных легковых автомобилей номера — это буква, три цифры, две буквы, затем две или три цифры с кодом региона.

У такси — две буквы, три цифры, затем две или три цифры с кодом региона.

Напишите программу, которая в перечне номеров находит номера частных автомобилей и номера такси:

Пример перечня:

А578ВЕ777 ОР233787 К901МН666 СТ46599 СНИ2929П777 666АМР666'

Результат:

Список номеров частных автомобилей: ['А578ВЕ777', 'К901МН666']
Список номеров такси: ['ОР233787', 'СТ46599']

Что оценивается

  • Результат вычислений корректен.
  • Формат вывода соответствует примеру.
  • Решение опирается на использование регулярных выражений и их методов.
  • Переменные, функции и собственные методы классов имеют значащие имена, не abcd.
import re

def determinant(text: str) -> list:
    civil = re.compile(r'''
    [АВЕКМНОРСТУХ]
    \d{3}
    [АВЕКМНОРСТУХ]{2}
    \d{2,3}
    ''', re.VERBOSE)

    taxi = re.compile(r'''
    [АВЕКМНОРСТУХ]{2}
    \d{5,6}
    ''', re.VERBOSE)

    civilset = [number for number in civil.findall(text)]
    taxiset = [number for number in taxi.findall(text)]

    result = f'''
Списки номеров частных авто: {civilset}
Список номеров такси: {taxiset}'''

    return result

def main():
    print(determinant('А578ВЕ777 ОР233787 К901МН666 СТ46599 СНИ2929П777 666АМР666'))

if __name__ == '__main__':
    main()