import re, collections
parts = [('p1', r'(?P<p1>[ABC]{1,3})'),
('p2', r'(?P<p2>.{0,2})'),
('p3', r'(?P<p3>[DEFG])'),
('p4', r'(?P<p4>.{2,3})'),
('p5', r'(?P<v>V)')]
pod = collections.OrderedDict(parts)
reg = "".join([v for k,v in pod.items()])
print(reg)
test_str = "AXDXXV"
m = re.search(reg, test_str)
if m:
m_dict = m.groupdict()
print(m_dict)
print("{} => {}".format(m.group("p1"), pod["p1"]))
aW1wb3J0IHJlLCBjb2xsZWN0aW9ucwoKcGFydHMgPSBbKCdwMScsIHInKD9QPHAxPltBQkNdezEsM30pJyksCgkoJ3AyJywgcicoP1A8cDI+LnswLDJ9KScpLAoJKCdwMycsIHInKD9QPHAzPltERUZHXSknKSwKCSgncDQnLCByJyg/UDxwND4uezIsM30pJyksCgkoJ3A1JywgcicoP1A8dj5WKScpXQpwb2QgPSBjb2xsZWN0aW9ucy5PcmRlcmVkRGljdChwYXJ0cykKcmVnID0gIiIuam9pbihbdiBmb3Igayx2IGluIHBvZC5pdGVtcygpXSkKcHJpbnQocmVnKQp0ZXN0X3N0ciA9ICJBWERYWFYiCm0gPSByZS5zZWFyY2gocmVnLCB0ZXN0X3N0cikKaWYgbToKCW1fZGljdCA9IG0uZ3JvdXBkaWN0KCkKCXByaW50KG1fZGljdCkKCXByaW50KCJ7fSA9PiB7fSIuZm9ybWF0KG0uZ3JvdXAoInAxIiksIHBvZFsicDEiXSkp
(?P<p1>[ABC]{1,3})(?P<p2>.{0,2})(?P<p3>[DEFG])(?P<p4>.{2,3})(?P<v>V)
{'p2': 'X', 'p3': 'D', 'p1': 'A', 'p4': 'XX', 'v': 'V'}
A => (?P<p1>[ABC]{1,3})