Я нашел ссылки на "предварительный просмотр", но примеры, которые я видел, показывают только пары чисел, а не более крупные группировки, и я не смог преобразовать их дальше двух цифр.
Переведено автоматически
Ответ 1
Используйте группу захвата внутри lookahead. Предварительный просмотр фиксирует интересующий вас текст, но фактическим совпадением технически является подстрока нулевой ширины перед предварительным просмотром, поэтому технически совпадения не перекрываются:
import re s = "123456789123456789" matches = re.finditer(r'(?=(\d{10}))', s) results = [int(match.group(1)) for match in matches] # results: # [1234567891, # 2345678912, # 3456789123, # 4567891234, # 5678912345, # 6789123456, # 7891234567, # 8912345678, # 9123456789]
Ответ 2
Вы также можете попробовать использовать сторонний regex модуль (не re), который поддерживает перекрывающиеся совпадения.
>>> import regex as re >>> s = "123456789123456789" >>> matches = re.findall(r'\d{10}', s, overlapped=True) >>> for match in matches: print(match) # print match ... 1234567891 2345678912 3456789123 4567891234 5678912345 6789123456 7891234567 8912345678 9123456789
Ответ 3
Мне нравятся регулярные выражения, но здесь они не нужны.
Просто
s = "123456789123456789"
n = 10 li = [ s[i:i+n] for i in xrange(len(s)-n+1) ] print'\n'.join(li)