不匹配的不明确子字符串

2024-10-06 16:19:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用正则表达式在一个DNA字符串中找到一个子串。这个子串有不明确的基,就像ATCGR,其中R可以是A或{}。另外,脚本必须允许x个不匹配的数目。所以这是我的密码

import regex

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

因此,如果有一个不匹配,我会期望3个子字符串AC**TGC**TGAGTCGT和{}和{}。预期结果如下:

^{pr2}$

但结果是

['TGC', 'TGA']

甚至使用关于芬德尔,代码无法识别最后一个子字符串。 另一方面,如果代码设置为允许2个与{e<;=2}不匹配,则输出为

['TGC', 'TGA']

有没有其他方法可以得到所有的子字符串?在


Tags: 字符串代码import脚本密码regexdna数目
1条回答
网友
1楼 · 发布于 2024-10-06 16:19:45

如果我理解得很好,您正在寻找与模式T[GA]T匹配的所有三个字母子串,并且您最多允许一个错误,但我认为您所寻找的错误只是一个字符替换,因为您从未谈到过2个字母的结果。在

要获得预期的结果,您必须将{e<=1}更改为{s<=1}(或{s<2},并将其应用于将其包含在组中的整个模式(而不仅仅是最后一个字母)(如您所愿,捕获或不捕获),否则谓词{}只链接到最后一个字母:

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

相关问题 更多 >