regex как получить несколько значений из строки
Есть строка с ссылками на видео. Нужно получить все ссылки из видео, но получаю всю строку. Также в ссылке содержится информация о разрешении видеофайла, можно ли как-то тоже сгруппировать?
import re
s = '**db**dhdgub https://fasdf/240.mp4 тутнекийшум https://hghkjajkkj/240.mp4 fhg**bdvdcydub***dhv'
a = re.findall('https(.*).mp4', s)
# output ://fasdf/240.mp4 тутнекийшум https://hghkjajkkj/240.
Ответы (2 шт):
Автор решения: Danil Apsadikov
→ Ссылка
import re
str = "**db**dhdgub https://fasdf/240.mp4 тутнекийшум https://hghkjajkkj/240.mp4 fhg**bdvdcydub***dhv"
#['https://fasdf/240.mp4', 'https://hghkjajkkj/240.mp4']
print(re.findall("(?P<url>https?://[^\s]+)", str))
Автор решения: Алексей Р
→ Ссылка
import re
s = '**db**dhdgub https://fasdf/240.mp4 тутнекийшум https://hghkjajkkj/240.mp4 fhg**bdvdcydub***dhv https://hghkjajkkj/1024.mp4 akjhnsadnal; https://fasdf/1024.mp4'
a = re.findall(r"(https://[^\s]+?(\d+)\.mp4)",s) # извлечь ссылки и разрешения ('https://fasdf/240.mp4', '240')
# сгруппировать ссылки по разрешению в словаре
d = {}
for link, res in a:
d.setdefault(int(res), []).append(link)
print(d)
{240: ['https://fasdf/240.mp4', 'https://hghkjajkkj/240.mp4'], 1024: ['https://hghkjajkkj/1024.mp4', 'https://fasdf/1024.mp4']}