python 带嵌套或正则表达式的模糊正则表达式

python fuzzy regex with nested or regex

我正在尝试对一串 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)应该算作替换。

您在最后一个示例中有 两个 替换:第一个碱基对已替换为 x,而最后一个已更改为 A .你只允许一个替换,所以没有匹配项。