¿Cómo aplicar pipe (regex OR) a una subcadena de patrón específica para que coincida con los grupos seguidos de O bien un conjunto de caracteres O EOL?

Tengo una serie de preguntas y respuestas, que quiero dividir en forma de pregunta.

s = 'Q1 blah1 Ans BLAH1 Q2 blah2 Ans BLAH2' re.split('(Q\d.*?)Q\d', s) 

El resultado:

 ['', 'Q1 blah1 Ans BLAH1 ', ' blah2 Ans BLAH2'] 

Quiero capturar la parte que comienza con ‘Q #’ y es seguida por otro ‘Q #’ o el final de la línea. Así que intenté usar esto:

 re.split('(Q\d.*?)Q\d|$', s) ['', 'Q1 blah1 Ans BLAH1 ', ' blah2 Ans BLAH2'] 

y esto:

 re.split('(Q\d.*?)(Q\d|$)', s) ['', 'Q1 blah1 Ans BLAH1 ', 'Q2', ' blah2 Ans BLAH2'] 

Pero, no me dan los resultados deseados. No funciona en el primer caso debido al uso inadecuado de | , pero no sé cómo rectificarlo. En el segundo caso, el Q2 no se captura junto con blah2 Ans BLAH2 .

EDITAR:

Salida deseada:

 ['', 'Q1 blah1 Ans BLAH1 ', 'Q2 blah2 Ans BLAH2'] 

Intenta dividir el siguiente patrón:

 \s+(?=Q\d+) 

Esto utiliza una afirmación positiva de búsqueda anticipada que afirma, pero no consume, que la siguiente pregunta está comenzando.

 s = 'Q1 blah1 Ans BLAH1 Q2 blah2 Ans BLAH2' print re.split('\s+(?=Q\d+)', s) ['Q1 blah1 Ans BLAH1', 'Q2 blah2 Ans BLAH2'] 

Manifestación