首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用regex提取特定的URL部件并重写

用regex提取特定的URL部件并重写
EN

Stack Overflow用户
提问于 2020-05-02 14:06:52
回答 1查看 72关注 0票数 0

我试图重写一些urls并通过一个正则表达式通过路径名提取它们的参数值。url可以有多个变体,s项、pg-n、排序顺序等等都可以是任意顺序的。除了类别,它总是在网站网址之后第一。

示例1: www.test.com/freebies/s-term/pg-2/

  • 提取$1=freebies,$2=term,$3=2
  • ,以便我可以重写到$1=freebies

示例2: www.test.com/freebies/pg-2/

  • #en0# $1=freebies,$2='',$3=2
  • ,这样我就可以重写了

所有可能的组合

代码语言:javascript
复制
http://localhost:8888/pg-2/
http://localhost:8888/s-term/
http://localhost:8888/s-term/pg-2/
http://localhost:8888/s-term/pg-2/
http://localhost:8888/freebies/
http://localhost:8888/freebies/pg-2/
http://localhost:8888/freebies/s-term/
http://localhost:8888/freebies/s-term/pg-2/

在任何一种情况下,我都希望得到第1组中的类别,第2组中的搜索项,第3组中的分页,第4组中的排序顺序。

这是我到目前为止尝试过的,但在替换区域,您可以看到它每次创建匹配时都会替换,我希望用一个新的url替换整个url,并包含组数据。

https://regex101.com/r/4v1uf5/10

你认为通过regex或.htaccess重写可能是一个更好的计划吗?

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2020-05-03 11:53:49

最后,通过一个又一个地使用多个组来提取值来解决这个问题:

代码语言:javascript
复制
(?:(freebies)\/|pg-([^\/]+)\/|s-([^\/]+)\/)\/?(?:s-([^\/]+)\/|pg-([^\/]+)\/)?(?:pg-([^\/]+)\/)?

这里的演示:https://regex101.com/r/4v1uf5/26

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61560658

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档