暧昧子与错配(Ambiguous substring with mismatches)

2019-09-26 14:37发布

我试图使用正则表达式来查找DNA串子串。 此子串具有不确定碱基,即像ATCGR ,其中R可以是AG 。 此外,该脚本必须允许x错配的数量。 所以这是我的代码

import regex

s = 'ACTGCTGAGTCGT'    
regex.findall(r"T[AG]T"+'{e<=1}', s, overlapped=True)

所以,用一个不匹配我希望3子AC**TGC**TGAGTCGTACTGC**TGA**GTCGTACTGCTGAGT**CGT** 。 预期的结果应该是这样的:

['TGC', 'TGA', 'AGT', 'CGT']

但输出

['TGC', 'TGA']

即使使用re.findall,代码不承认最后一个子。 在另一方面,如果该代码被设置为允许2个错配{ë<= 2}时,输出为

['TGC', 'TGA']

是否有另一种方式来获得所有的子?

Answer 1:

如果我没有理解好,您正在寻找匹配模式的所有三个字母串T[GA]T你允许在最差的一个错误 ,但我认为你正在寻找的错误是只因为你从来没有谈到一个字符替换约2信的结果。

为了获得预期的结果,则必须改变{e<=1}{s<=1} {s<2}并把它应用到整个图案(而不是仅最后一个字母)包围它在的基团(捕捉或没有捕捉,像你想),否则谓词{s<=1}仅链接到最后字母:

regex.findall(r'(T[AG]T){s<=1}', s, overlapped=True)


文章来源: Ambiguous substring with mismatches