2011-02-07 10 views
6

Busco a extraer,

ID=(?P<group>.+?);

de una cadena, el 'ID =' es una constante, el grupo puede ser cualquier cosa . La posición del partido variará en la cadena.

Esto está bien en la mayoría de los casos, sin embargo, ocasionalmente la coincidencia será al final de la cadena y faltarán los puntos y coma. En este caso, ¿cómo puedo combinar el final de la cadena? He intentado lo siguiente:

ID=(?P<group>.+?)[;$] 

pero esto no parece funcionar, imagino porque $ no es un personaje (que es un ancla?).

Esto se hace en Python utilizando el módulo re, y se ha tenido en cuenta todo el comportamiento normal, como el uso de cadenas sin formato (¡creo!).

Respuesta

15

Puedes usar (;|$) para combinarlo. O si no desea una captura, (?:;|$)

1

si el re.MUTILINE opción no está activada ($ significa final de la cadena)

ID=(?P<group>)[^;]+ 

si el re.MUTILINE opción está activada ($ significa finales de la línea)

ID=(?P<group>)[^;\r\n]+ 

¿Qué capturar, por cierto: lo que está entre (P < grupo>) y ';'? ?

+0

Buen punto en el multilínea, solo será una línea para este código, así que no lo he mirado realmente. Tu pregunta en la última línea me confundió hasta que me di cuenta de que tenía el. +? fuera del grupo de captura, ahora arreglado y con suerte eso está un poco más claro. – mrmagooey

Cuestiones relacionadas