2014-08-28 4 views
0

У меня есть строка, в которой есть пары случайных символов, повторяющихся 3 раза внутри нее, для ex "abababwhatevercdcdcd", и я хочу удалить эти пары, чтобы получить остальную часть строки, например "whatever" в первом примере , как это сделать?Как заменить повторяющийся шаблон символов

Я попытался следующие:

import re 
re.sub(r'([a-z0-9]{2}){3}', r'', string) 

, но он не работает

+0

Как насчет ' "wabababhatevercdcdcd"' - это должно быть ' "все"' а? – mgilson

+0

yep that right – razzak

ответ

4

Вы должны обратные ссылки здесь, чтобы повторить матч, который был действительно, в противоположность попытке сделать новый матч с по той же схеме:

([a-z0-9]{2})\1\1 

>>> import re 
>>> re.sub(r'([a-z0-9]{2})\1\1', r'', "abababwhatevercdcdcd") 
'whatever' 
>>> re.sub(r'([a-z0-9]{2})\1\1', r'', "wabababhatevercdcdcd") 
'whatever' 
+0

спасибо, отлично работал – razzak

+0

Несомненно, @razzak. –

+0

btw 're.sub (r '([a-z0-9] {2}) {3}', r ''," wabababhatevercdcdcd ")' возвращает 'cd' не' what' !! – razzak

1

Для более одного символа, вы можете использовать:

(.{2,})\1+ 
Смежные вопросы