我正在尝试对一串 DNA 读数进行一些模糊匹配。我想允许最多 1 个替换错误,同时允许一个特定的碱基对成为两个选项之一(在这种情况下是 A 或 G)。
我从以下开始:
>>> regex.findall("([A|G]TTAGATACCCTGGTAGTCC){0<=s<=1}", "ATTAGATACCCTGGTAGTCA")
['ATTAGATACCCTGGTAGTCA']
符合预期,因为我正在匹配确切的字符串
>>> regex.findall("([A|G]TTAGATACCCTGGTAGTCC){0<=s<=1}", "GTTAGATACCCTGGTAGTCA")
['GTTAGATACCCTGGTAGTCA']
符合预期,因为我正在匹配除了第一个碱基对已从 A 切换到 G 的确切字符串(允许)
>>> regex.findall("([A|G]TTAGATACCCTGGTAGTCC){0<=s<=1}", "GTTAGATACCCTGGTAGTCx")
['GTTAGATACCCTGGTAGTCx']
符合预期,因为发生了单个替换 (C->x)
>>> regex.findall("([A|G]TTAGATACCCTGGTAGTCC){0<=s<=1}", "xTTAGATACCCTGGTAGTCx")
[]
不匹配(如预期),因为有两个替换
>>> regex.findall("([A|G]TTAGATACCCTGGTAGTCC){0<=s<=1}", "xTTAGATACCCTGGTAGTCA")
[]
应该匹配,因为第一个碱基对错误(x 而不是 A 或 G)应该被算作替换。