Как с помощью регулярного выражения вывести последние 2-3 цифры траспортного номера как регион?

Я делаю задачу, где необходимо проверить валидность транспортного номера с помощью регулярных выражений. Валидный транспортным номером (1 буква, 3 цифры, 2 буквы, 2-3 цифры).Я написала код:

import re
car_id = input("Введите номер: ")
result = re.findall(r'^([АВЕКМНОРСТУХ]\d{3}[АВЕКМНОРСТУХ]{2})(\d{2,3})$'', car_id)
if car_id is not None:
    print(f"Результат: Номер {car_id} валиден. Регион: {car_id}")
else:
    print(f"Результат: Номер {car_id} не валиден")

Код срабатывает так и выдает следующий результат, что неверно по условиям задачи т.к в начале 1 буква:

Результат: Номер AF222hv193 валиден. Регион: AF222hv193

Но мне нужно чтобы в ответе после региона выходили последние 2-3 цифры. Как это сделать?


Ответы (1 шт):

Автор решения: nomnoms12
import re

regexp = re.compile(r'^[АВЕКМНОРСТУХ]\d{3}[АВЕКМНОРСТУХ]{2}(?P<reg>\d{2,3})$')
car_id = 'А123ВЕ456'

match = regexp.match(car_id)
if match:
    print(f"Результат: Номер {car_id} валиден. Регион: {match['reg']}")
else:
    print(f"Результат: Номер {car_id} не валиден")

stdout:

Результат: Номер А123ВЕ456 валиден. Регион: 456
→ Ссылка