Вот немного другой вариант, который, кажется, дает хорошие результаты из предоставленных вами образцов.
Из частей с тире мы обрезаем любые конечные шестнадцатеричные строки и расширение имени файла;затем мы извлекаем один из них с наибольшим количеством тире из каждого URL и, наконец, заменяем оставшиеся тире пробелами.
import re
regex = re.compile(r'(-[0-9a-f]+)*(\.[a-z]+)?$', re.IGNORECASE)
for url in urls:
parts = url.split('/')
trimmed = [regex.sub('', x) for x in parts if '-' in x]
longest = sorted(trimmed, key=lambda x: -len(x.split('-')))[0]
print(longest.replace('-', ' '))
Вывод:
call to end affordable care act is immoral says cha president
new website puts louisiana art on businesses walls
global clean energy inc otcpkgcei climbs investors radar as key momentum reading hits
female music art to take center stage at swan day in new britain
Trump orders Treasury HUD to develop new plan
research delivers insight into the global business voip services market during the period
why mirza international limited nse
indian gaming industry grows in revenues
facebook instagram banning pro white
fluence receives another aspiraltm bulk order with partner itest in china
top firms decry religious exemption bills proposed in texas
correction trump investigations sater lawsuit story
weather channel sued 125 million over death storm chase collision
Моя первоначальная попытка очиститвывести числа с конца URL только после извлечения самого длинного, и это сработало для ваших примеров;но обрезание конечных чисел сразу при расщеплении, вероятно, более устойчиво к изменениям в этих паттернах.