2012-02-14 3 views
13

в следующей строке:Regex - матч все, кроме прямой косой черты

/Сиэттл/ресторан

Я хотел бы, чтобы соответствовать Сиэтл (если он присутствует) (иногда URL может быть/Сиэттл/ресторан и иногда это может быть/ресторан). То, что я не хочу, чтобы соответствовать следующим слеш: Сиэттл/

Я попытался следующие, но я не могу заставить его работать:

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

мне нужен первый косую черту, поэтому решение не удалить, что, что я могу сделать так:

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

Благодаря

Томас

ответ

22

Как насчет этого?

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

Я тестировал его с питоном и, кажется, работает нормально:

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

отлично! Спасибо – ThomasD

+2

Я думаю, '' /seattle/restaurant'.split ('/') 'сделал бы то же самое. – film42

Смежные вопросы