Ok, here's one attempt. This function looks for patterns (with specified minimum an maximum length) repeated a minimum/maximum number of times:
findRepeatedPatterns[
string_String,
minMaxSequenceLength_List,
minMaxRepititions_List
] := findRepeatedPatterns[
Characters@string,
minMaxSequenceLength,
minMaxRepititions
];
findRepeatedPatterns[
list_List,
minMaxSequenceLength_List,
minMaxRepititions_List
] := DeleteDuplicates[
ReplaceList[
list,
{
Repeated[
PatternSequence[___, x : Repeated[_, minMaxSequenceLength], ___],
minMaxRepititions
]
} :> {x}
]
];
Look for patterns of at least length 3 repeated at least 3 times:
findRepeatedPatterns["01100110011020110", {3, \[Infinity]}, {3, \[Infinity]}]
Out[2] = {{"0", "1", "1"}, {"0", "1", "1", "0"}, {"1", "1", "0"}}