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

Python 用于提取两个单词之间字符串的正则表达式,python,regex,Python,Regex,我有一个没有空格的字符串 ATG AGC TAA CTC AGG TGA TGG GGA ATG CCC CGC TAA 我需要提取ATG和以TAG | TGA | TAA (不应包括结尾) . 如何从字符串中提取以获取 ATGAGC和 atgccccgcta使用正则表达式 我试过的 pattern = re.compile(r'(?=(ATG(?:...)*?)(?=TAG|TGA|TAA))') 它无法按预期工作。请使用以下正则表达式: In [14]: regex = re.compi

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

ATG AGC TAA CTC AGG TGA TGG GGA ATG CCC CGC TAA
我需要提取
ATG
和以
TAG | TGA | TAA
(不应包括结尾) . 如何从字符串中提取以获取

ATGAGC
atgccccgcta
使用正则表达式

我试过的

pattern = re.compile(r'(?=(ATG(?:...)*?)(?=TAG|TGA|TAA))')
它无法按预期工作。

请使用以下正则表达式:

In [14]: regex = re.compile(r'(ATG.*?)(?:TAG|TGA|TAA)')

In [15]: regex.findall(s)
Out[15]: ['ATGAGC', 'ATGGGGAATGCCCCGC']
请注意,这些匹配项不包含尾部

import re

pattern = re.compile(r'(ATG[A-Z]+)(?:TAG|TGA|TAA)')
results = pattern.search('ATGCCCCGCTAA')

print results.groups(0)
导致

('ATGCCCCGC',)

本工程不包括尾端:

>>> re.findall(r'(ATG(?:...)*?)(?:TAG|TGA|TAA)', seq)
['ATGAGC', 'ATGCCCCGC']
?:
表示结果中不会捕获模式

:仅指定三个字符。另一种选择是
{3}
[ACTG]{3}


*?
:表示最小匹配。没有这一点,最长的比赛将获得。

你得到了什么结果?我感觉每年这个时候都会有同样的问题被问到。。。。例如和…为什么ATGCCCCGCTAA包含
TAA
?而ATGAGC没有吗?@Dan-Haha。也许你可以链接到搜索页面instead@cricket_007也许我所需要做的就是链接到标签的搜索,每个问题都是基因组模式的正则表达式模式的一些变化。不过,我需要排除标记。