Вы можете использовать следующее регулярное выражение и возвращать 'match'
или 'not_match'
в зависимости от того, была найдена группа захвата или нет.
\1
будет указывать, что вы хотите {4}
повторений первой группы захвата:
def valid_string(s, lim=10):
m = re.search(r'(\d)\1{4}', s)
return 'match' if not m and len(s)==lim else 'not_match'
valid_string('1234567890')
# 'match'
valid_string('1111234567')
# 'match'
valid_string('1233333456')
# 'not_match'