Viel Glück mit dem regulären Ausdruck, aber wenn Sie benötigen einen Backup-Plan, ....
def pull_subs(str, n)
arr = str.chars
(n..str.size).each_with_object([]) { |i,a| arr.each_cons(i) { |b|
a << b.join if b.uniq.size == n } }
end
str = "aabbaacceeeeeaa"
pull_subs(str, 3)
#=> ["baac", "acce", "bbaac", "baacc", "aacce", "accee", "abbaac", "bbaacc",
# "aaccee", "acceee", "aabbaac", "abbaacc", "aacceee", "acceeee", "ceeeeea",
# "aabbaacc", "aacceeee", "acceeeee", "cceeeeea", "ceeeeeaa", "aacceeeee",
# "acceeeeea", "cceeeeeaa", "aacceeeeea", "acceeeeeaa", "aacceeeeeaa"]
pull_subs(str, 2)
#=> ["ab", "ba", "ac", "ce", "ea", "aab", "abb", "bba", "baa", "aac", "acc",
# "cce", "cee", "eea", "eaa", "aabb", "abba", "bbaa", "aacc", "ccee",
# "ceee", "eeea", "eeaa", "aabba", "abbaa", "cceee", "ceeee", "eeeea",
# "eeeaa", "aabbaa", "cceeee", "ceeeee", "eeeeea", "eeeeaa", "cceeeee",
# "eeeeeaa"]
pull_subs(str, 4)
#=> ["baacce", "bbaacce", "baaccee", "abbaacce", "bbaaccee", "baacceee",
# "aabbaacce", "abbaaccee", "bbaacceee", "baacceeee", "aabbaaccee",
# "abbaacceee", "bbaacceeee", "baacceeeee", "aabbaacceee", "abbaacceeee",
# "bbaacceeeee", "baacceeeeea", "aabbaacceeee", "abbaacceeeee",
# "bbaacceeeeea", "baacceeeeeaa", "aabbaacceeeee", "abbaacceeeeea",
# "bbaacceeeeeaa", "aabbaacceeeeea", "abbaacceeeeeaa", "aabbaacceeeeeaa"]
Nicht klar, was Sie tun. – sawa