我试图找到与原始模式字符串“远离”最多两个错误的字符串(即它们最多相差两个字母)。
但是,以下代码没有按我的预期工作,至少从我对模糊正则表达式的理解来看:
import regex
res = regex.findall("(ATAGGAGAAGATGATGTATA){e<=2}", "ATAGAGCAAGATGATGTATA", overlapped=True)
print res
>> ['ATAGAGCAAGATGATGTATA'] # the second string
如您所见,这两个字符串在三个字母上不同,而不是最多两个:
第一个有:ATAG GAG AAGATGATGTATA
第二个有:ATAG AGC AAGATGATGTATA
然而结果显示第二个字符串,好像它在 e<=2 内(这也发生在重叠 = False 中,所以不可能是这样)。
我在这里想念什么?有没有办法让它在给定模式的 Hamming 2-ball 中只找到字符串?
字母交换是否有可能被认为只是一种变化?如果是这样 - 我该如何避免这种情况?