Прекратить захват любой строки на основе / для URL в Django (регулярное выражение) - PullRequest
3 голосов
/ 19 марта 2012

Итак, я использую Django для создания веб-сервиса, но у меня проблема с регулярным выражением в Urls.

Я хочу перейти к localhost / user / USERNAME / products /, где именем пользователя может быть любой символ, а не просто \ w. Я попытался захватить это, используя это:

('^user/(?P<username>.+)/$', 'user'),
('^user/(?P<username>.+)/products/$', 'get_products'),

, но он захватывает имя пользователя 'USERNAME / products' и отправляет его пользователю. Как я должен сказать, что каждый возможный символ ИСКЛЮЧИТЕ переднюю косую черту для любой длины кроме нуля?

1 Ответ

8 голосов
/ 19 марта 2012

Используйте [^/]+ вместо .+.

Как отмечает Крис Пратт ниже, .+? также будет работать, так как это регулярное выражение "без захвата", которое будет соответствовать любому символу до совпадения для следующего подвыражения.Обычно я предпочитаю обычные готовые решения, а не решения, не позволяющие захватить, где это возможно, потому что они не вводят несколько правил оценки.

...