Я ищу цифру, которая может появляться в двух разных рисунках. Шаблоны являются взаимоисключающими внутри одной строки, и поскольку они имеют одинаковое значение, я хочу объединить результат в одну переменную.
abc: DIGIT
или DIGIT-xyz
Создание шаблонов само по себе не проблема, но я не уверен, как правильно вернуть сопоставленную группу (цифру).
text = 'lorem ipsum abc: 3 lorem ipsum'
my_pattern = re.compile("(abc:\s+(\d)|(\d)-xyz)")
result = re.search(my_pattern, text)
if result:
if result.group(2):
return result.group(2)
else:
return result.group(3)
# returns 3
Это решение отлично работает, но что, если будет более двух альтернатив? Есть ли более элегантный способ вместо написания нескольких условных операторов?