Dos expresiones regulares muy cercanas con aserciones de búsqueda anticipada en Python: ¿por qué re.split () se comporta de manera diferente?

Estaba tratando de responder esta pregunta donde el OP tiene la siguiente cadena:

"path:bte00250 Alanine, aspartate and glutamate metabolism path:bte00330 Arginine and proline metabolism" 

Y quiere dividirlo para obtener la siguiente lista:

 ['path:bte00250 Alanine, aspartate and glutamate metabolism', 'path:bte00330 Arginine and proline metabolism'] 

Intenté resolverlo utilizando una aserción simple de búsqueda anticipada en una expresión regular, (?=path:) . Bueno, no funcionó:

 >>> s = "path:bte00250 Alanine, aspartate and glutamate metabolism path:bte00330 Arginine and proline metabolism" >>> r = re.compile('(?=path:)') >>> r.split(s) ['path:bte00250 Alanine, aspartate and glutamate metabolism path:bte00330 Arginine and proline metabolism'] 

Sin embargo, en esta respuesta , el respondedor lo puso en funcionamiento precediendo la afirmación de búsqueda anticipada con un espacio en blanco:

 >>> line = 'path:bte00250 Alanine, aspartate and glutamate metabolism path:bte00330 Arginine and proline metabolism' >>> re.split(' (?=path:)', line) ['path:bte00250 Alanine, aspartate and glutamate metabolism', 'path:bte00330 Arginine and proline metabolism'] 

¿Por qué funcionó la expresión regular con los espacios en blanco? ¿Por qué no funcionó sin el espacio en blanco?

re.split() Python tiene una limitación documentada : no se puede dividir en coincidencias de longitud cero. Por lo tanto la división solo funcionó con el espacio agregado.