2012-02-14 12 views
13

nella seguente stringa:Regex - Partita di tutto, ma barra

/Seattle/ristorante

vorrei abbinare Seattle (se presente) (a volte l'URL potrebbe essere/Seattle/ristorante e a volte potrebbe essere/ristorante). Quello che non voglio è quello di abbinare la seguente avanti Slash: Seattle/

ho provato quanto segue, ma non riesco a farlo funzionare:

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

Ho bisogno la prima barra, in modo che il soluzione non è quella di rimuovere quello che posso fare in questo modo:

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

Grazie

Thomas

risposta

22

Che dire di qualcosa del genere?

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

ho provato con Python e sembra funzionare bene:

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

perfetto! Grazie – ThomasD

+2

Penso che ''/seattle/restaurant'.split ('/')' farebbe la stessa cosa. – film42

Problemi correlati