2014-04-04 53 views
0

說我有以下的正則表達式:在python的正則表達式重複次數

"GGAGG.{5,13}?(ATG|GTG|TTG)(...)+?(TGA|TAA|TAG)" 

有沒有辦法,看看有多少重複被用做了部分{5,13}? 想知道GGAGG和起始密碼子有多遠。我可以稍後手動搜索它,但想知道在原始正則表達式中是否有更好的方法。

+0

是的。如果您提供樣本輸入和預期輸出,則其他人可以向您展示我相信的內容。 –

+1

您可以簡單地將'。{5,13}?'放入捕獲組,並使用'len()'函數獲取長度。 –

回答

2

你可以做

"GGAGG(.{5,13}?)(ATG|GTG|TTG)(...)+?(TGA|TAA|TAG)" 

,然後使用像

rem = re.match(pat, s) 
dist_between_ggagg_and_start_codon = len(rem.group(1)) 
+0

要小心,這裏的問號並不意味着可選,而是讓前面的量詞不情願。 –

+0

相信我在你評論的同一時間解決了這個問題。 – desfido

0

代碼你可以使用match.start方法整場比賽或團體的立場。使用該信息:

>>> import re 
>>> seq = 'xxxxGGAGGxxxxxxxATGxxxTGA' 
>>> pattern = "GGAGG.{5,13}?(ATG|GTG|TTG)(...)+?(TGA|TAA|TAG)" 
>>> match = re.search(pattern, seq) 
>>> match.start(1) - match.start() - 5 # 5 = len(GGAGG) 
7