在 RegEx 中的最后一个斜杠之后获取值并忽略类别 slug

Posted

技术标签:

【中文标题】在 RegEx 中的最后一个斜杠之后获取值并忽略类别 slug【英文标题】:Grab value after last slash in RegEx and ignore category slugs 【发布时间】:2020-10-14 01:32:50 【问题描述】:

我在旧网站上设置了以下格式的网址:

blog/cat1/my-post-title
blog/my-post-title
blog/my-post-title/
blog/cat1/sub-cat1/my-post-title

我正在尝试为以下格式设置 RegEx 重定向:

articles/my-post-title

不再需要类别 slug

到目前为止,我的不良尝试一直在关注,您可以看到它有缺陷:

规则 1:

blog\/(#?.*)\/(#?.*)\/(#?.*)

articles/$3

规则 2:

blog\/(#?.*)\/(#?.*)

articles/$2

规则 3:

blog\/(#?.*)

articles/$1

我们能否设置一个规则并仅抓取最后一个斜线之后的 post slug 并忽略所有类别 slug(如果有)?

【问题讨论】:

【参考方案1】:

好的,我可以使用以下内容:

([^/]+\/?[blog/]2?\/)(.*?)([^/]+)/$

并获得 post slug:

articles/$3

【讨论】:

如果您的 URL 末尾有 /,上述方法有效,对于末尾没有 / 的 URL,请使用以下 ([^/]+\/?[blog/]2?\/)(.*?)([^/]+)$

以上是关于在 RegEx 中的最后一个斜杠之后获取值并忽略类别 slug的主要内容,如果未能解决你的问题,请参考以下文章

postgres regex_replace 第三个和最后一个正斜杠之间的所有内容

匹配数据框,排除最后一个非 NA 值并忽略顺序

带有或不带有斜杠的 PHP RegEx

如何从 MySQL 数据库中获取最后一个插入值并更新 Access 中的字段?

XSL 获取元素值并忽略嵌套元素

忽略URL的一部分并匹配其余部分