如何修改此正则表达式以接受Django中的此URL?

时间:2013-08-29 05:13:58

标签: python regex django django-urls

我有一个像这样的Django网址:

url(r'^(?P<category_id>\w+)/beginner/$', views.beginner, name='beginner')

此正则表达式接受以下URL:

http://127.0.0.1:8000/quiz/grammar/beginner/
http://127.0.0.1:8000/quiz/vocabulary/beginner/

但不接受'-'的网址:

# This URL is not accepted
http://127.0.0.1:8000/quiz/business-english/beginner/

如何修改此正则表达式以接受'-'

的网址

2 个答案:

答案 0 :(得分:5)

最好用\w+替换[\w-]+现在它会匹配单词和-

说:匹配单词\w-一次或多次

您的Django网址看起来像

url(r'^(?P<category_id>[\w-]+)/beginner/$', views.beginner, name='beginner')

答案 1 :(得分:1)

\w匹配字母,数字和_,而非-

\w替换为[-\w]

url(r'^(?P<category_id>[-\w]+)/beginner/$', views.beginner, name='beginner')