为什么这个正则表达式代码不起作用

Why is this regex code not working

正在开发 Django 应用程序

这是我的 urls.py

urlpattterns = [url(r'^(?P<leagueId>[0-9]+)/(?P<year>[0-9]+)/(?P<team>[\S]+)/$', views.team_detail, name="team_detail"),]

一个例子 url 是这样的:

http://localhost:8000/123456/2017/Johnny%20Rocket/

我尝试使用 Pythex,但我无法让 url 匹配

注意:传递的变量是/{number}/{year}/{name}

名称可以包含字母数字字符和空格。

字符 class \S 匹配除白色 space 以外的任何字符,并且 %20 在与正则表达式匹配之前被解码为 space。

要匹配字母数字字符和白色space,可以使用[\w\s]

我会使用以下正则表达式:

r"(?P<leagueId>\d+)/(?P<year>\d+)/(?P<team>[^/]+)/$"

一些小改动:

  • 去掉表示行首的^
  • 将 [0-9] 更改为 \d

但最重要的是版块。我喜欢用负号类。您基本上想要将所有内容匹配到下一个

/

就是这样

[^/]+

会为你做的。

您可能希望将年份限制在如下范围内:

\d{2,4}