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
.你只允许一个替换,所以没有匹配项。
我正在尝试对一串 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
.你只允许一个替换,所以没有匹配项。