Мне нужно найти строку в Python 3, и у меня возникают проблемы с реализацией не жадной логики, начиная с конца.
Я пытаюсь объяснить на примере:
Ввод можетбыть одним из следующих
test1 = 'AB_x-y-z_XX1234567890_84481.xml'
test2 = 'x-y-z_XX1234567890_84481.xml'
test3 = 'XX1234567890_84481.xml'
Мне нужно найти последнюю часть строки, заканчивающуюся
somestring_otherstring.xml
Во всехВ приведенных выше случаях регулярное выражение должно возвращать XX1234567890_84481.xml
Моя лучшая попытка:
result = re.search('(_.+)?\.xml$', test1, re.I).group()
print(result)
Здесь я использовал:
(_.+)?
, чтобы соответствовать "_anystring" в нежадный режим
\.xml$
для совпадения с «.xml» в последней части строки
Вывод, который я получаю, неверен:
_x-y-z_XX1234567890_84481.xml
Я нашел некоторыеТАК вопросы ( ссылка ), объясняющие, что регулярное выражение начинается слева, даже с не жадным квалификатором.
Может ли кто-нибудь объяснить мне, как реализовать не жадное регулярное выражение справа?