是否有可能构造一个正则表达式来捕获所有出现的由字符序列分隔的文本?换句话说,我正在寻找一种等效的标准.split()
方法。
我不能使用split()
,因为正则表达式用于指定Tornado Web应用程序的URL路由。例如:
handlers = [
(r'/posts/([0-9a-zA-Z_\-]+)', PostsHandler),
]
Run Code Online (Sandbox Code Playgroud)
当为在Tornado,Django或任何其他实现Routes模式的Web框架上构建的Web应用程序指定URL路由时,这样的正则表达式会派上用场。特别是将未知长度的URL路径解析为参数列表。
到目前为止,我设法提出了以下正则表达式:
/^\/posts(?:\/([a-zA-Z0-9_\-]+))+/
Run Code Online (Sandbox Code Playgroud)
不幸的是,当表达式匹配时/posts/show/some-slug/15
,它仅返回最后一个匹配组(15
),而不是['show', 'some-slug', '15']
。
我想要实现的是:
/posts/edit/15/
=> ['edit', '15']
/posts/edit/15
=> ['edit', '15']
/posts/2010/15/11
=> ['2010', '15', '11']