2017-01-28 16 views
0
https://fire.vimeocdn.com/1485599447-0xf546ac1afe7bce06fa5153973a8b85b1c45051d3/159463108/video/499604330/playlist.m3u8 

Я хочу Включить все, кромеplaylist.m3u8Как я могу выбрать все в URL, кроме имени файла и расширения?

(playlist.[^.]*) 

выбирает "playlist.m3u8", мне нужно сделать прямо противоположное.

Это Демо. https://regex101.com/r/RONA65/1

+1

Возможно http://stackoverflow.com/questions/24465512/regular-expression-to-match-everything-until-the-last-occurrence-of было бы полезно. –

+0

@Nowhere Проверьте мое решение. Я думаю, вы искали позитивный взгляд в будущее. – MYGz

ответ

1

Вы можете использовать положительный взгляд вперед:

(.*)(?=playlist\.[^.]*) 

Демо:

https://regex101.com/r/RONA65/4


Или вы можете попробовать, как это так:

.*\/ 

Demo:

https://regex101.com/r/RONA65/2

Regex:

.*\/ Выберите все до последнего /

+0

Второй подход хорош, выберите все до /, Победитель –

0

Вы можете использовать функцию разделения:

>>> s = 'https://fire.vimeocdn.com/.../159463108/video/499604330/playlist.m3u8' 
>>> '/'.join(s.split('/')[:-1]) 
'https://fire.vimeocdn.com/.../159463108/video/499604330' 

Или проще с rsplit:

>>> s = 'https://fire.vimeocdn.com/.../159463108/video/499604330/playlist.m3u8' 
>>> s.rsplit('/', 1)[0] 
'https://fire.vimeocdn.com/.../159463108/video/499604330' 
0

не-жадный матч, добавив '?' после того, как '*'

import re 
s = 'https://fire.vimeocdn.com/1485599447-0xf546ac1afe7bce06fa5153973a8b85b1c45051d3/159463108/video/499604330/playlist.m3u8' 
m = re.match('(.*?)(playlist.[^.]*)', s) 
print(m.group(1))