EDITAR: eliminar el ejemplo original porque provocó respuestas secundarias. también arregló el título.
La cuestión es por qué la presencia de la "$" en la expresión regular efectúa la greedyness de la expresión:
Aquí está un ejemplo más simple: "?"
>>> import re
>>> str = "baaaaaaaa"
>>> m = re.search(r"a+$", str)
>>> m.group()
'aaaaaaaa'
>>> m = re.search(r"a+?$", str)
>>> m.group()
'aaaaaaaa'
El parece estar haciendo nada. Tenga en cuenta que cuando se quita el "$", sin embargo, el "?" se respeta:
>>> m = re.search(r"a+?", str)
>>> m.group()
'a'
EDIT: En otras palabras, "? a + $" se cumplan todos los de la una del lugar de sólo el último, esto no es lo que esperaba. Aquí está la descripción de la expresión regular "+?" desde el python docs: "Agregar '?' después de que el calificador lo haga realizar el partido de manera no codiciosa o mínima, se emparejarán la menor cantidad posible de personajes ".
Esto no parece ser el caso en este ejemplo: la cadena "a" coincide con la expresión regular "a +? $", Entonces ¿por qué no coincide la misma expresión en la cadena "baaaaaaa" solo una sola a (la más a la derecha)?
¿Te importaría aclarar un poco tu pregunta? Tengo problemas para entender exactamente qué es lo que quieres. ¿A qué te refieres con "el primer partido"? ¿Estás hablando del '. +'? – arussell84
Puede haber una manera mejor de hacer esto con otra biblioteca (en el contexto de las rutas) pero esto es fundamentalmente una pregunta acerca de las expresiones regulares. – krumpelstiltskin
Lo que quiero decir con la primera coincidencia es la primera búsqueda(), la editaré. – krumpelstiltskin