我有一个像这样的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/
如何修改此正则表达式以接受'-'
答案 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')