正则表达式检查URL查询参数的结束

Regex to check ending of URL query parameter

我有以下测试字符串:

  • http://example.com/?foo=bar&path=a/b/c.png/bar=foo
  • http://example.com/?foo=bar&path=a/b/c.png&bar=foo
  • http://example.com/?foo=bar&path=a/b/c.png
  • http://example.com/?foo=bar&path=a/b/c.png/
  • 我在寻找一个只匹配path=a/b/c.png的regex(路径查询参数,不带尾随斜杠)。路径查询参数可以位于行的开头、中间或结尾。

    到目前为止,我有以下regex path=[^#&]*

    你可以在这里看到:https://regex101.com/r/v4dqdx/1/

    谢谢你的帮助!

    编辑:更清楚的是,第1行和第4行中带有尾随斜杠的查询参数不应匹配。


    代码

    请参见此处使用的regex:多行使用m标志

    1
    2
    \bpath=[^#&
    ]*\.\w+(?=[&#]|$)

    如果内容不是多行,请使用此选项:

    1
    \bpath=[^#&]*\.\w+(?=[&#]|$)

    号解释

    • \b断言作为词边界的位置。单词边界是与(^\w|\w$|\W\w|\w\W)匹配的位置。
    • path=字面上匹配这个
    • [^#&
      ]*
      匹配除#&
      以外的任何字符任何次数
    • \.与文字点匹配
    • \w+匹配一个或多个字字符
    • (?=[&#]|$)正向前看,确保集合&#中的字符匹配或是行尾。