2012-03-08 10 views
6

Luchando con RE para buscar secuencias 'TAA' (trillizos de 3 caracteres) 'TAA' de nuevo.expresión regular de Python con los codones

He intentado lo siguiente:

re.findall('TAA...+?TAA',seq) que por supuesto no da trillizos, pero me da secuencias

re.findall('TAA([ATGC]{3})+?TAA' , seq) sin embargo me da una lista como salida

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

¿Alguna idea? A medida que por supuesto puede comprobar la salida de

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

si la longitud% 3 == 0, pero la forma de hacer esto con RE?

+0

¿Es TAA TAA TAA una captura válida (TAA estar fuera de la casualidad también el triplete medio de 3 caracteres)? –

Respuesta

4

Desea un grupo sin captura.

(?:...)

Una versión no captura de paréntesis regulares. Coincide con cualquier expresión regular que esté entre paréntesis, pero la subcadena que coincide con el grupo no se puede recuperar después de realizar una coincidencia o hacer referencia a ella más adelante en el patrón.

Prueba esto:

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

¿Sucede que tiene una idea para combinar esto con TAA TAG TGA como primer o último encuentro? – Jasper

+0

Solución para mí para que otros la usen: re.findall ('(?: TAA | TAG | TGA) (?: [ATGC] {3}) +? (?: TAA | TAG | TGA)', seq) – Jasper

Cuestiones relacionadas