This is not an exact solution, Just a hint to help you. You can take help from this code if it is useful.
import re
s='aaabbb'
def _all_sub(_s,_ss):
if not _ss:
return 0
else:
for i in range(0,len(_s),1):
pattern=r'{}'.format(_s[i:i+_ss[0]])
print(re.search(pattern,s))
return _all_sub(_s,_ss[1:])
print(_all_sub(s,list(range(len(s)))))
sample output:
....
<_sre.SRE_Match object; span=(3, 6), match='bbb'>
<_sre.SRE_Match object; span=(3, 5), match='bb'>
<_sre.SRE_Match object; span=(3, 4), match='b'>
<_sre.SRE_Match object; span=(0, 4), match='aaab'>
<_sre.SRE_Match object; span=(1, 5), match='aabb'>
<_sre.SRE_Match object; span=(2, 6), match='abbb'>
<_sre.SRE_Match object; span=(3, 6), match='bbb'>
<_sre.SRE_Match object; span=(3, 5), match='bb'>
<_sre.SRE_Match object; span=(3, 4), match='b'>
<_sre.SRE_Match object; span=(0, 5), match='aaabb'>
<_sre.SRE_Match object; span=(1, 6), match='aabbb'>
<_sre.SRE_Match object; span=(2, 6), match='abbb'>
<_sre.SRE_Match object; span=(3, 6), match='bbb'>
<_sre.SRE_Match object; span=(3, 5), match='bb'>
<_sre.SRE_Match object; span=(3, 4), match='b'>
....