python正则表达式重复字符

python正则表达式重复字符,python,regex,Python,Regex,我希望在python中创建一个正则表达式,它匹配所有DNA序列,从T开始,后跟18字符(任意字符),然后以AA、TT、CC或GG终止。我可以管理第一部分,但我似乎找不到一种方法来写结尾(双字符),而不复制正则表达式4次。 以下是我对以TT结尾的序列的理解: import re seq='ATGTGTGGACACAAGTGACAGTTTACGATGAGGTTACAGCCCGCA' match=re.findall('T.{18}TT',seq) print match 退房 有一个概念叫做交替。

我希望在python中创建一个正则表达式,它匹配所有DNA序列,从
T
开始,后跟
18
字符(任意字符),然后以
AA
TT
CC
GG
终止。我可以管理第一部分,但我似乎找不到一种方法来写结尾(双字符),而不复制正则表达式4次。 以下是我对以
TT
结尾的序列的理解:

import re
seq='ATGTGTGGACACAAGTGACAGTTTACGATGAGGTTACAGCCCGCA'
match=re.findall('T.{18}TT',seq)
print match
退房

有一个概念叫做交替。它匹配任何一个给定选项:

r'T.{18}(?:TT|AA|CC|GG)'
请注意,您应该使用原始字符串在Python中对正则表达式进行编码,否则稍后将遇到转义字符的问题。

请退出

有一个概念叫做交替。它匹配任何一个给定选项:

r'T.{18}(?:TT|AA|CC|GG)'

请注意,您应该使用原始字符串在Python中对正则表达式进行编码,否则您将在稍后遇到转义字符的问题。

感谢您的快速回答。不幸的是,给出的代码可以使用re.search()方法,因为我使用的是re.findall()方法,所以我发现应该使用'T.{18}(?:TT | AA | CC | GG'),因为findall()与search()处理regexp组的方式不同是的。@AlexeiBassinski如果不特别需要捕获子组,通常最好添加
?:
。我只是把它省略了,让解决方案尽可能基本。谢谢你的快速回答。不幸的是,给出的代码可以使用re.search()方法,因为我使用的是re.findall()方法,所以我发现应该使用'T.{18}(?:TT | AA | CC | GG'),因为findall()与search()处理regexp组的方式不同是的。@AlexeiBassinski如果不特别需要捕获子组,通常最好添加
?:
。我只是把它省略了,以使解决方案尽可能基本。