Regex: заменить один шаблон другим - PullRequest
0 голосов
/ 31 марта 2012

Я пытаюсь заменить один шаблон регулярного выражения на другой шаблон регулярного выражения.

st_srt = 'Awake.01x02.iNTERNAL.WEBRiP.XViD-GeT.srt'
st_mkv = 'Awake.S01E02.iNTERNAL.WEBRiP.XViD-GeT.mkv'

pattern = re.compile('\d+x\d+') # for st_srt
re.sub(pattern, 'S\1E\2',st_srt)

Я знаю, что использование S\1E\2 здесь неправильно.Я использую \1 and \2, чтобы поймать значение 01 and 02 и использовать его в S\1E\2.

Мой желаемый результат:

st_srt = 'Awake.S01E02.iNTERNAL.WEBRiP.XViD-GeT.srt'

Итак, как правильно достичь этого.

Ответы [ 4 ]

2 голосов
/ 31 марта 2012

Похоже, вы уже приняли ответ, но я думаю, что вы пытаетесь это сделать: получить строку замены из st_mkv, а затем использовать ее в st_srt:

import re
st_srt = 'Awake.01x02.iNTERNAL.WEBRiP.XViD-GeT.srt'
st_mkv = 'Awake.S01E02.iNTERNAL.WEBRiP.XViD-GeT.mkv'

replace_pattern = re.compile(r'Awake\.([^.]+)\.')
m = replace_pattern.match(st_mkv)
replace_string = m.group(1)

new_srt = re.sub(r'^Awake\.[^.]+\.', 'Awake.{0}.'.format(replace_string), st_srt)
print new_srt
2 голосов
/ 31 марта 2012

Вам нужно захватить то, что вы пытаетесь сохранить.Попробуйте это:

pattern = re.compile(r'(\d+)x(\d+)') # for st_srt
st_srt = re.sub(pattern, r'S\1E\2', st_srt)
1 голос
/ 31 марта 2012

Попробуйте использовать это регулярное выражение:

([\w+\.]+){5}\-\w+

скопируйте сюда шевеления: http://www.gskinner.com/RegExr/

и вставьте регулярное выражение вверху.

Это захватывает именакаждой строки, опуская расширение.

Затем вы можете добавить нужное расширение к нужной строке.

РЕДАКТИРОВАТЬ:

Вот что яраньше делал то, что тебе нужно:

import re
st_srt = 'Awake.01x02.iNTERNAL.WEBRiP.XViD-GeT.srt' // dont actually need this one
st_mkv = 'Awake.S01E02.iNTERNAL.WEBRiP.XViD-GeT.mkv' 
replace_pattern = re.compile(r'([\w+\.]+){5}\-\w+')
m = replace_pattern.match(st_mkv)

new_string = m.group(0)
new_string += '.srt'

>>> new_string
'Awake.S01E02.iNTERNAL.WEBRiP.XViD-GeT.srt'
0 голосов
/ 31 марта 2012
import re

st_srt = 'Awake.01x02.iNTERNAL.WEBRiP.XViD-GeT.srt'

st_mkv = 'Awake.S01E02.iNTERNAL.WEBRiP.XViD-GeT.mkv'

pattern = re.compile(r'(\d+)x(\d+)')

st_srt_new = re.sub(pattern, r'S\1E\2', st_srt)

print st_srt_new
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...