0

我有一个格式如下的 URL:

http://domain.com/post-type/category/category-name/page/2

category-name并且无论接下来发生什么都只需要提取。

例如,在网址中:

http://domain.com/projects/category/print/page/2

我只想要这个词

print

我正在尝试这个正则表达式:category\/(.+)\/(?(?=(?:category)\/)^|(.+))\/(.+)\/?$通过一些搜索拼凑在一起,但我真的对正则表达式感到很困惑。

http://regex101.com/r/uG8pV8

笔记

我在 PHP 中执行这个(我认为是正则表达式,对吗?)。目前,Wordpress 的代码是这样的:$newrules['projects/category/(.*/?)$'] = 'index.php?post_type=project&project_cat=$matches[1]';这似乎取了整个 URL 之后projects/category/

编辑

是否也可以获取页码?

例如:http://domain.com/post-type/category/category-name/page/2

是否可以仅获得category-name单独2的匹配项?

4

2 回答 2

2

您必须.+??后面使用不贪婪的匹配器.+意味着未准备好,并且在找到其自身后面的第一个模式后停止匹配。在这种情况下,这是/.+.

/category\/(.+?)\/.+/
于 2013-11-04T12:37:49.880 回答
0

你可以试试这个正则表达式。

(?<=http:\/\/domain\.com\/projects\/category\/)([^\/]+)
于 2013-11-04T12:42:45.247 回答