是否有可能在Tornado中捕获处理程序的可选参数

MLi*_*ter 1 python regex tornado

我有一个绑定到Tornado中的处理程序的URL.例如

(r'/browse/article/([a-zA-Z0-9_-]+)/([0-9]*)', ArticleHandler),
Run Code Online (Sandbox Code Playgroud)

但是,参数的数量并不固定,有些将是/browse/article/blah,其他的将是/browse/article/blah/2.换句话说,最后一个参数可能存在也可能不存在.

是否仍然可以使用单个处理程序来处理这种情况?如果是这样,我应该如何制定正则表达式字符串以匹配所有可能的情况?

Tim*_*ker 8

试试这个:

(r'/browse/article/([a-zA-Z0-9_-]+)(?:/([0-9]*))?', ArticleHandler),
Run Code Online (Sandbox Code Playgroud)

这使得最后一段是可选的,同时保持捕获括号完整,以防它们稍后用于某些事情.