如何在GAE/Python中为n个参数编写RESTful URL路径正则表达式?
现在我有三个网址路径,它们都指向一个叫做ServiceHandler的服务。我想把这三个路径合并成一个整洁的正则表达式,这样就可以传递任意数量的参数给ServiceHandler了。
(r'/s/([^/]*)', ServiceHandler),
(r'/s/([^/]*)/([^/]*)', ServiceHandler),
(r'/s/([^/]*)/([^/]*)/([^/]*)', ServiceHandler)
3 个回答
0
你可以试试这样的写法:
(r'/s/([^/]*)/?([^/]*)/?([^/]*)', ServiceHandler)
我觉得你总是会得到3个参数传给ServiceHandler,不过那些没有用到的参数会是空字符串。
0
这段代码应该适用于任何数字。
(r'(?<!^)/([^/]+)', ServiceHandler)
不过,我查看了urlresolvers.py这个文件,发现这样做是行不通的。不过,你可以通过使用regex.findall来修补urlresolvers.py中的正确行为,而不是用re.search。
1
(r'^/s/(([^/]*)((/[^/]+)*))$', ServiceHandler)
这样做可以匹配任意数量的
/s/foo/bar/baz/to/infinity/and/beyond/
你也可以通过类似下面的方式来限制匹配的范围
^/s/(([^/]*)((/[^/]+){0,2}))$
这样只会匹配像这样的内容
/s/foo/bar/baz
/s/foo/bar
/s/foo
但不会匹配
/s/foo/bar/baz/pirate
/s