difflib を使用して、長いシーケンス内の短い文字列のすべての一致を識別しています。ただし、複数の一致がある場合、difflib は 1 つだけを返すようです。
> sm = difflib.SequenceMatcher(None, a='ACT', b='ACTGACT')
> sm.get_matching_blocks()
[Match(a=0, b=0, size=3), Match(a=3, b=7, size=0)]
私が期待した出力は次のとおりです。
[Match(a=0, b=0, size=3), Match(a=0, b=4, size=3), Match(a=3, b=7, size=0)]
実際、文字列 ACTGACT には、位置 0 と 4 に 2 つの一致する ACT が含まれており、両方ともサイズ 3 です (さらに、文字列の末尾にサイズ 0 の別の一致があります)。
複数のマッチを取得するにはどうすればよいですか? difflib が両方の位置を返すことを期待していました。