2012-02-14 42 views
13

en la siguiente cadena:Regex - coincide con todo, pero barra inclinada

/Seattle/restaurante

me gustaría coincidir Seattle (si está presente) (a veces la url podría ser/Seattle/restaurante y a veces puede ser/restaurante). Lo que no quiero es para que coincida con la siguiente barra diagonal: Seattle/

he intentado lo siguiente, pero no puedo conseguir que funcione:

 /(.*[^/]?)restaurant(\?.*)?$ 

necesito la primera barra inclinada, por lo que la solución no es quitar eso, lo que yo puedo hacer como esto:

 (/?)(.*)/restaurant(\?.*)?$ 

Gracias

Thomas

Respuesta

22

¿Qué tal algo como esto?

^/([^/]+)/?(.*)$ 

he comprobado con el pitón y parece funcionar bien:

>>> regex=re.compile(r'^/([^/]+)/?(.*)$') 
>>> regex.match('/seattle').groups() 
('seattle', '') 
>>> regex.match('/seattle/restaurant').groups() 
('seattle', 'restaurant') 
+0

perfecto! Gracias – ThomasD

+2

Creo que ''/seattle/restaurant'.split ('/')' haría lo mismo. – film42

Cuestiones relacionadas