是否可以构造一个正则表达式来捕获所有出现的由字符序列分隔的文本?换句话说,我正在寻找一种等效的标准.split()
方法。
我不能使用split()
,因为正则表达式用于指定 Tornado Web 应用程序的 URL 路由。例如:
handlers = [
(r'/posts/([0-9a-zA-Z_\-]+)', PostsHandler),
]
当为构建在 Tornado、Django 或任何其他实现路由模式的 Web 框架之上的 Web 应用程序指定 URL 路由时,这样的正则表达式会派上用场。特别是,将未知长度的 URL 路径解析为参数列表。
到目前为止,我已经设法提出以下正则表达式:
/^\/posts(?:\/([a-zA-Z0-9_\-]+))+/
不幸的是,当表达式匹配/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']