Можно ли построить регулярное выражение, которое фиксирует все вхождения текста, разделенного последовательностью символов? Другими словами, я ищу эквивалент стандартного .split()
метода.
Я не могу использовать split()
, потому что регулярное выражение используется при указании URL-маршрутов для веб-приложения Tornado. Например:
handlers = [
(r'/posts/([0-9a-zA-Z_\-]+)', PostsHandler),
]
Такое регулярное выражение удобно использовать при указании URL-маршрутов для веб-приложений, созданных поверх Tornado, Django или любой другой веб-среды, в которой реализован шаблон Routes. В частности, для разбора пути 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']