2012-11-16 47 views
1

我希望創建在python匹配所有DNA序列開始T隨後18字符(任何字符),然後通過任一AATTCCGG終止的正則表達式。我可以管理第一部分,但我似乎無法找到一種方法來編寫結尾(雙字符),而無需重複正則表達式4次。 下面是我對在TT結尾的序列:蟒正則表達式的重複字符

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

回答

5

退房a good tutorial

有一個概念叫做交替。它匹配的給定的任何一個選項:

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

請注意,您應該使用原始字符串在Python編碼的正則表達式,否則你將得到與後來的轉義字符的問題。

+0

感謝您的快速回答。不幸的是,由於我使用了re.findall()方法,我發現我應該使用'T. {18}(?: TT | AA | CC | GG)',而代之以使用re.search()方法的代碼。因爲findall()不會像search()那樣處理正則表達式組。 –

+0

@AlexeiBassinski如果您不特別需要捕獲子組,通常最好添加'?:'。我只是把它留下來儘可能保持解決方案的基本。 –