【问题标题】:Catch url without parameters获取不带参数的url
【发布时间】:2018-03-29 16:21:52
【问题描述】:

在排除参数时捕获 url 时遇到问题(? 符号之后的内容)

所以对于以下链接

/alfa/wp-includes/js/jquery/jquery.js
/beta/wp-includes/js/jquery/jquery.js?parameter=value

我需要以下内容

alfa /wp-includes/js/jquery/jquery.js
beta /wp-includes/js/jquery/jquery.js

到目前为止,我想出了以下内容,但它总是捕获完整的链接,包括我不需要的参数

^(/alfa|beta)?(/wp-(content|admin|includes).*)

【问题讨论】:

  • 为什么不使用 URI 解析器?这并不总是那么容易。
  • 那么this?

标签: regex


【解决方案1】:

试试这个(假设你的输入总是以 .js 结尾)

(/(alfa|beta)(/wp-(content|admin|includes).*))(\.js|\?)

或改进 ctwheels 的评论:

^/(alfa|beta)([^?\s]*)(\.js|\?)

我不确定它是否 100% 满足您的需求,但我在 regexpal.com 中运行了该查询,它的工作原理与您描述的一样。

【讨论】:

  • 谢谢,试过了,但它永远不会捕获任何没有参数的链接
  • @JoeS 现在试试。抱歉,我忘了包含条件
  • 还是不行,用最新的更新就能全部搞定
  • 等等。在我以前的版本中。如果找不到匹配项,您不能在代码中假设结果没有参数吗?这就是我会做的。 @JoeS
  • 对不起,我在 Nginx 重写中使用这个,所以我需要一个精确的正则表达式。
【解决方案2】:

试试这个:

(\/(alfa|beta)[^\?]+)

https://regex101.com/r/AmgHTS/8

【讨论】:

    猜你喜欢
    • 2023-03-13
    • 2012-11-05
    • 2021-12-10
    • 1970-01-01
    • 2011-07-20
    • 2011-09-09
    • 1970-01-01
    • 2020-12-07
    • 1970-01-01
    相关资源
    最近更新 更多