我有一个没有空格的字符串。
ATG AGC TAA CTC AGG TGA TGG GGA ATG CCC CGC TAA
我需要在ATG
之间提取字符串,并以TAG|TGA|TAA
结尾
(不应包括结尾)
。如何从字符串中提取
ATGAGC
和
ATGCCCCGCTAA
使用正则表达式。
我尝试了什么
pattern = re.compile(r'(?=(ATG(?:...)*?)(?=TAG|TGA|TAA))')
它没有按预期工作。
答案 0 :(得分:1)
使用以下正则表达式:
In [14]: regex = re.compile(r'(ATG.*?)(?:TAG|TGA|TAA)')
In [15]: regex.findall(s)
Out[15]: ['ATGAGC', 'ATGGGGAATGCCCCGC']
请注意,这些匹配不包含尾随。
答案 1 :(得分:0)
import re
pattern = re.compile(r'(ATG[A-Z]+)(?:TAG|TGA|TAA)')
results = pattern.search('ATGCCCCGCTAA')
print results.groups(0)
结果
('ATGCCCCGC',)
答案 2 :(得分:0)
这是有效的,因为不包括结尾:
e->name;
>>> re.findall(r'(ATG(?:...)*?)(?:TAG|TGA|TAA)', seq)
['ATGAGC', 'ATGCCCCGC']
表示不会在结果中捕获模式。
?:
:正好指定三个字符。替代方案是...
或更具限制性的.{3}
[ACTG]{3}
:表示最低匹配。如果没有这个,将获得最长的匹配。