gpt4 book ai didi

regex - 正则表达式精确匹配不带参数的 URL 的最后一个路径段,除非路径以尾部斜杠结尾

转载 作者:行者123 更新时间:2023-12-02 01:28:41 25 4
gpt4 key购买 nike

我的正则表达式冒险的目标是为一种机制创建一个匹配器,即使存在由 #? 表示的参数,也可以向 URL 添加尾部斜杠?位于URL末尾。

对于以下任意 URL,我正在寻找 segment 的匹配项,如下所示:

  1. https://example.com/what-not/segment 匹配 segment
  2. https://example.com/what-not/segment?a=b 匹配 segment
  3. https://example.com/what-not/segment#a 匹配 segment

如果 segment 匹配, 我将用 segment/ 替换它。

对于以下任意 URL,不应有匹配项:

  1. https://example.com/what-not/segment/ 不匹配
  2. https://example.com/what-not/segment/?a=b 不匹配
  3. https://example.com/what-not/segment/#a 不匹配

因为这里已经有一个尾部斜杠。

我已经尝试过:

  1. 这个原始正则表达式及其变体:.*\/([^?#\/]+)。但是,使用这种方法,当已经存在尾部斜杠时,我无法使其不匹配。
  2. 我尝试了负向前瞻,如下所示:([^\/\#\?]+)(?!(.*[\#\?].*))$。在这种情况下,我无法正确删除任何 ?# 部分。

感谢您的热心帮助!

最佳答案

Lookahead and lookbehind conditionals太强大了!

(?<=\/)[\w]+(?(?=[\?\#])|$)

P.s:我刚刚添加了 [\w]+,这意味着 [a-zA-Z0-9_]+
当然,URL 可以包含许多其他字符,例如 -~,但对于提供的示例来说,它效果很好。

关于regex - 正则表达式精确匹配不带参数的 URL 的最后一个路径段,除非路径以尾部斜杠结尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73815865/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com