import re texts = ['1д1ч', '1д1м', '1д1ч1м'] for text in texts: m = re.search(r'^(?!$)(?:(?P<day>\d+)д)?(?:(?P<hour>\d+)ч)?(?:(?P<minute>\d+)м)?$', text) if m: print(m.groupdict())
Standard input is empty
{'day': '1', 'hour': '1', 'minute': None} {'day': '1', 'hour': None, 'minute': '1'} {'day': '1', 'hour': '1', 'minute': '1'}