>>> import re
>>> r = re.compile(r'hoge(.*)hoge', re.I | re.S)
>>> for m in r.findall(u'hogefuga\nhogehage\nhogehoge\n'):
... print m
...
fuga
hogehage
hoge
これは
'fuga\nhogehage\nhoge'
が検出されているということだと思いますが
re.S をつけたままで
'fuga\n'
と
'hage\n'
と
''
が出て来るようにするにはどうすれば良いでしょう?