Вы можете установить модуль регулярных выражений PyPi , который поддерживает шаблоны обратной ширины переменной ширины, чтобы использовать регулярное выражение, которое находит последовательности, которые повторяются ровно N - 1 раз:
import regex
def func(s, N):
return regex.findall(r'(?=(.+?)(?:\1){%d}(?!\1))(?<!\1)' % (N - 1), s)
так что:
func("abbcccddddefefef", 3)
возвращает:
['c', 'ef']
и что:
func("abbcccddddefefef", 2)
возвращает:
['b', 'dd', 'fe']
Обратите внимание, что вы ожидаетевывод для N = 2 неверен, потому что 'dd'
и 'fe'
оба также встречаются ровно 2 раза.