Regex匹配可选的第三个url参数


Regex match optional third url parameter

我有以下URL结构:

http://sitename.com/subdir/category-name/subcategory-name/article

以下是一些示例URL:

http://127.0.0.1/ocko/works/videos/
http://127.0.0.1/ocko/texts/stuff/
http://127.0.0.1/ocko/works/teletubbies/oint/
http://127.0.0.1/ocko/works/teletubbies/oint/

类别可以是workstextsarticle是可选的。

这是我的正则表达式:

(works|texts)('/.+)(?:('/.+))'/

问题是它只匹配最后两个例子,就像第三个参数(article)是强制性的,尽管我为最后一部分编写了(?:('/.+))

我正试图将幕后的东西重新安排到类似的地方:

http://127.0.0.1/ocko/category/works/videos/

我正在构建这样的字符串:http://127.0.0.1/ocko/category/$1$2$3

怎么样:

 (works|texts)('/.+?)('/.+?)?'/

https://regex101.com/r/oK1eU7/1