使用正则表达式搜索直到需要的模式

2024-06-11 06:06:25 发布

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

我正在使用以下正则表达式:

orfre = '^(?:...)*?((ATG)(...){%d,}?(?=(TAG|TAA|TGA)))' % (aa)

我基本上想找到所有以ATG开头的序列,然后是三元组(例如TTA、TTC、GTC等),直到它在帧中找到一个终止密码子。然而,正如我写的regex一样,如果aa很大,它实际上不会在停止密码子处停止。相反,它将继续搜索,直到找到一个满足aa条件的。我宁愿让它搜索整个字符串,直到找到一个终止密码子。如果匹配不够长(对于给定的aa参数),那么它应该返回None。在

字符串数据: aaaatgtgcataaccctataa公司

正则表达式的期望输出: 阿特格卡塔

除非aa>;5,在这种情况下,不应退还任何东西。在

我得到的实际产量:atgatgcattacccta


Tags: 字符串tag序列条件regexaa密码子tta
2条回答

这应该能奏效。You can see it on codepad。在

import re

num = 4
blue = 'XXXAAAATGATGCATTAACCCTAATAAXXX'
pattern = "^(?:...)*(ATG(...){%d}(?:TAG|TAA|TGA))" % num

m = re.match(pattern, blue)
print m.group(1)

哪个输出:ATGCATTAACCCTAATAA

分解:

^{pr2}$

除非我遗漏了一些其他的要求,它不应该比这个复杂得多。在

补充说明:如果您想检查一个序列中可用的六个帧,请别忘了检查互补链:

comp_chain = chain[::-1]    

(>;extended slices

音译后一个A代表T,G代表C

相关问题 更多 >