2012-02-14 36 views
13

trong chuỗi sau:Regex - phù hợp với tất cả mọi thứ nhưng dấu gạch chéo

/seattle/nhà hàng

Tôi muốn để khớp với Seattle (nếu nó hiện diện) (đôi khi các url có thể là/seattle/nhà hàng và đôi khi nó có thể là/nhà hàng). Những gì tôi không muốn là để phù hợp với những điều sau dấu gạch chéo: seattle/

Tôi đã thử những điều sau đây, nhưng tôi không thể có được nó để làm việc:

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

tôi cần những dấu gạch chéo đầu tiên, do đó giải pháp không phải là để loại bỏ, mà tôi có thể làm như thế này:

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

Cảm ơn

Thomas

Trả lời

22

Còn về cái gì như thế này?

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

Tôi đã thử nghiệm nó với trăn và dường như làm việc tốt:

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

hoàn hảo! Cảm ơn – ThomasD

+2

Tôi nghĩ rằng ''/seattle/restaurant'.split ('/')' sẽ làm điều tương tự. – film42

Các vấn đề liên quan