为什么这个正则表达式代码不起作用
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}
正在开发 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}