2012-03-08 16 views
6

Yeniden 'TAA' dizileri (3 karakter üçlüsü) 'TAA' aramak için RE ile mücadele.Kodonlarla Python düzenli ifadesi

re.findall('TAA...+?TAA',seq) elbette vermez üçüz ama bana

re.findall('TAA([ATGC]{3})+?TAA' , seq) ancak bana çıktı

'AGG', 'TCT', 'GTG', 'TGG', 'TGA', 'TAT', 

bir fikir olarak bir listesini verir dizileri veriyor:

Aşağıdaki çalıştı? uzunluk% 3 == 0, ama nasıl RE ile bunu yapmak ise elbette I itibariyle

re.findall('TAA...+?TAA',seq)

çıktı kontrol edebilirim?

+0

TAA TAA TAA geçerli bir yakalama (TAA da tesadüfen 3 karakter orta üçlü dışına olmak üzere) var mı? –

cevap

4

Yakalama yapmayan bir grup istiyorsunuz. (?:...)

düzenli parantez olmayan bir yakalama sürüm

. Normal ifadenin parantez içinde ne olursa olsun eşleşir, ancak grup tarafından eşleşen alt öğe eşleşme gerçekleştirildikten sonra veya modelde daha sonra başvuruda bulunulamaz.

bu deneyin:

re.findall('TAA(?:[ATGC]{3})+?TAA' , seq) 
+0

Bunu bir ilk veya son karşılaşma olarak TAA TAG TGA ile birleştirmek için bir fikir olması için? – Jasper

+0

Diğerlerinin kullanması için kendime çözüm: re.findall ('(?: TAA | TAG | TGA) (?: [ATGC] {3}) +? (?: TAA | TAG | TGA)', seq) – Jasper

İlgili konular