正则表达式提取两个单词之间的字符串

时间:2016-09-18 04:42:14

标签: python regex

我有一个没有空格的字符串。

ATG AGC TAA CTC AGG TGA TGG GGA ATG CCC CGC TAA

我需要在ATG之间提取字符串,并以TAG|TGA|TAA结尾 (不应包括结尾) 。如何从字符串中提取

ATGAGCATGCCCCGCTAA使用正则表达式。

我尝试了什么

pattern = re.compile(r'(?=(ATG(?:...)*?)(?=TAG|TGA|TAA))')

它没有按预期工作。

3 个答案:

答案 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}:表示最低匹配。如果没有这个,将获得最长的匹配。