得到URL只是URI段(Get only URI segments from URL)

2019-08-08 04:52发布

我试图让使用正则表达式的URI段。

例如URI:

http://abc.com/hello/hi/bye?humm/ok=hi&ya=yaya/wow/waaah
               ^^^^^ ^^ ^^^                    ^^^ ^^^^^

我在尝试:

/(?<=\/)[\w-]+(?=(\/|$|\r|\?))/g

但它不能正常工作。 查询字符串是没有得到排除( wow/waaah )。

所以,当我尝试以下,一切都得到了排除:

/(?<!?.+)(?<=\/)[\w-]+(?=(\/|$|\r|\?))/g

这有什么错呢?

Answer 1:

你忘了逃跑第二? 在第二正则表达式。 它应该阅读:

/(?<!\?.+)(?<=\/)[\w-]+(?=(\/|$|\r|\?))/g

注意:您可以通过使用像这样的字符类提高了正则表达式:

/(?<!\?.+)(?<=\/)[\w-]+(?=[/\r\n?]|$)/g

编辑:

对于最小公分母的解决方案,以满足正则表达式的所有不同的口味,你需要两个步骤:

  • 删除尾随? 和所有的字符之后(如果存在):


    ^[^/]+//[^/]+([^?]+)

    请捕获组1返回的字符串。

  • 提取由循环通过URI段:


    /([\w-]+)

    这些段在捕获组1返回。



文章来源: Get only URI segments from URL
标签: regex url