首页 > 解决方案 > 正则表达式从具有特定字符作为开始和结束的字符串中查找多个组合

问题描述

我正在尝试查找具有起始字符的可能字符串的匹配项:“ATG”和结束字符“TAA”或“TGA”或“TAG”。例如,如果我的字符串是:

seq = 'GATGATCGATGCTGACGTATAGGTTAAC'

我想使用正则表达式来匹配这 3 个:

match1 = 'ATGATCGATGCTGA'

match2 = 'ATGATCGATGCTGACGTATAG'

match3 = 'ATGATCGATGCTGACGTATAGGTTAA'

如果你使用第二个“ATG”也是一样的:

MATCH4 = 'ATGCTGA'

MATCH5 = 'ATGCTGACGTATAG'

MATCH6 = 'ATGCTGACGTATAGGTTAA'

到目前为止,我已经写了这个:

Frame1_ORF = re.match(\r '(^(ATG)?:(TGA|TAA|TAG)$)',Frame1) 

但是我的语法或符号不正确。你能帮我找到这 6 个匹配项吗?

谢谢。

标签: pythonregexpython-3.xexpression

解决方案


这应该这样做:

import re

resp =[]
seq = 'G**ATG**ATCG**ATG**C**TGA**CGTA**TAG**GT**TAA**C'


while re.findall(r'(?<=ATG)(.*)(?=(TGA|TAA|TAG))',seq):
    seq = re.findall(r'(?<=ATG)(.*)(?=(TGA|TAA|TAG))', seq)
    resp.append("ATG"+seq[0][0]+seq[0][1])
    seq="ATG"+seq[0][0]
print(resp)

推荐阅读