我正在使用 difflib 来识别较长序列中短字符串的所有匹配项。然而,当有多个匹配时,difflib 似乎只返回一个:
> 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 包含两个匹配的 ACT,分别位于位置 0 和 4,大小均为 3(加上字符串末尾的另一个大小为 0 的匹配)。
如何获得多个匹配项?我期待 difflib 返回两个位置。