Python: ¿Se requieren expresiones regulares de longitud fija?

Tengo esta expresión regular que usa miradas hacia delante y hacia atrás:

import re re.compile(")|(?<=") 

Estoy intentando portarlo de C # a Python, pero sigo recibiendo el error

 look-behind requires fixed-width pattern 

¿Es posible volver a escribir esto en Python sin perder el significado?

La idea es que coincida con algo como

  

Actualizar

Estoy usando los lookarounds para analizar el texto multiparte HTTP que he modificado

 body = r"""------abc Content-Disposition: form-data; name="upfile"; filename="file.txt" Content-Type: text/plain  ------abc Content-Disposition: form-data; name="upfile2"; filename="pic.png" Content-Type: image/png  ------abc Content-Disposition: form-data; name="note" this is a note ------abc-- """ multiparts = re.compile(...).split(body) 

Quiero solo obtener la ruta del archivo y otro texto cuando haga la división y no tener que eliminar las tags de apertura y cierre

La brevedad del código es importante, pero estoy abierto a cambiar el formato <!inc( si hace posible la expresión regular).

Para las rutas + “todo” en la misma matriz, simplemente divida en la etiqueta de apertura y cierre:

 import re p = re.compile(r'''''') awesome = p.split(body) 

Dice que es flexible en las tags de cierre, si )!> Puede aparecer en otra parte del código, puede considerar cambiar esa etiqueta de cierre a algo como )!/inc> (o cualquier otra cosa, siempre que sea única).

Verlo correr

De la documentación:

(?

Coincide si la posición actual en la cadena no está precedida por una coincidencia para ... Esto se llama una afirmación de mirada negativa detrás de. De manera similar a las afirmaciones de aspecto positivo detrás de, el patrón contenido solo debe coincidir con cadenas de cierta longitud fija . Los patrones que comienzan con aserciones de mirada negativa pueden coincidir al principio de la cadena que se está buscando.

(?<=...)

Coincide si la posición actual en la cadena está precedida por una coincidencia para ... que termina en la posición actual. Esto se llama una afirmación de mirada positiva detrás de (? <= abc) def encontrará una coincidencia en abcdef, ya que el lookbehind hará una copia de seguridad de 3 caracteres y verificará si el patrón contenido coincide. El patrón contenido solo debe coincidir con cadenas de cierta longitud fija , lo que significa que abc o a | b están permitidos, pero a * y a {3,4} no lo están. Tenga en cuenta que los patrones que comienzan con aserciones de mirada positiva no coincidirán al principio de la cadena que se busca; lo más probable es que desee utilizar la función search () en lugar de la función match ():

Énfasis mío. No, no creo que pueda trasladarlo a Python en su forma actual.

 import re pat = re.compile("\<\!inc\((.*?)\)\!\>") f = pat.match(r"").group(1) 

da como resultado f == 'C:\My Documents\file.jpg'

En respuesta a Jon Clements:

 print re.escape("") 

resultados en

 \<\!inc\(filename\)\!\> 

Conclusión: re.escape parece pensar que deberían escaparse.