我试图用正则表达式在一个DNA字符串中找到一个子串。这个子串有不明确的基,就像ATCGR
,其中R
可以是A
或{x
个不匹配的数目。所以这是我的密码
import regex
s = 'ACTGCTGAGTCGT'
regex.findall(r"T[AG]T"+'{e<=1}', s, overlapped=True)
因此,如果有一个不匹配,我会期望3个子字符串AC**TGC**TGAGTCGT
和{
但结果是
['TGC', 'TGA']
甚至使用关于芬德尔,代码无法识别最后一个子字符串。 另一方面,如果代码设置为允许2个与{e<;=2}不匹配,则输出为
['TGC', 'TGA']
有没有其他方法可以得到所有的子字符串?在
如果我理解得很好,您正在寻找与模式
T[GA]T
匹配的所有三个字母子串,并且您最多允许一个错误,但我认为您所寻找的错误只是一个字符替换,因为您从未谈到过2个字母的结果。在要获得预期的结果,您必须将}只链接到最后一个字母:
{e<=1}
更改为{s<=1}
(或{s<2}
),并将其应用于将其包含在组中的整个模式(而不仅仅是最后一个字母)(如您所愿,捕获或不捕获),否则谓词{相关问题 更多 >
编程相关推荐