2012-03-31 3 views
-2

Чтобы быть более конкретными, я не знаю, какими будут точные значения.Регулярное выражение для соответствия именам видеофайлов

По существу мне нужно найти 3 или 4 цифры символов, за которыми следует буквальная буква p?

т.е. 1080p, 720p, 576p и т.д ...

Посмотрел вокруг много вещей, но просто не мог заставить его работать.

Heres' пример строки

Back.to.the.Future.1985.720p.BluRay.X264-AMIABLE.mkv 

В этом случае я хочу вернуть

Back.to.the.Future.1985. 

re.search("^[^\d{3,4}p]+","Back.to.the.Future.1985.720p.BluRay.X264-AMIABLE.mkv") 

однако, возвращает

'Back.to.the.Future.' 

Большое спасибо

+2

Какая часть вы пытаетесь захватить? Что вы пробовали и как это не сработало? – sarnold

ответ

2
>>> import re 
>>> re.search("(.*)\d{3,4}p", 
       "Back.to.the.Future.1985.720p.BluRay.X264-AMIABLE.mkv").groups()[0] 
'Back.to.the.Future.1985.' 
+0

Спасибо, это решило! – KwasiG

3

мне нужно найти 3 или 4 значные символы следуют буквальному буквой р

\d{3,4}p 

Если вы не хотите, чтобы соответствовать 3456p в 123456poop вы можете добавить некоторые утверждения, например:

\b\d{3,4}p\b 
1

Похоже, то, что вам нужно, - «что угодно», за которым следует одна или несколько цифр, а затем «p». Затем вы хотите «захватить» часть «ничего».

Это выглядит как

(.*)\d+p 

или указать диапазон цифр величин,

(.*)\d{3,4}p 
Смежные вопросы