Как найти нужную последовательность символов в Python и отделить лишнее?

У меня есть 2 варианта вхождения символов:

'09-1103-2' и '09-1103-1-3'

Мне нужно написать регулярное выражение, после которого будет такой вывод:

['09-1103', '2'] и ['09-1103-1', '3'] соответственно

Первая строка в списке - нужная последовательность, вторая - лишний символ


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

Автор решения: Lecron
str.rsplit('-', 1)[0]

UPD: Выражение разделяет строку на фрагменты по символу '-', начиная справа. Параметр "1" ограничивает количество разбиений, возвращая результат ['09-1103-1', '3']. Индекс в скобках указывает взять только нужную часть, первый элемент массива — '09-1103-1'.

→ Ссылка
Автор решения: strawdog

Если у вас задача именно использовать регулярные выражения, то можно сделать так:

import re

def extr(a: str) -> list:
    return re.findall(r"(.+)-(\d+)$", a)

print(extr('09-1103-2'))
print(extr('09-1103-1-3'))
[('09-1103', '2')]
[('09-1103-1', '3')]

Обратите внимание, что метод findall вернет вам список кортежей.

→ Ссылка