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

时间:2018-01-12 15:53:46

标签: regex

我有以下测试字符串:

  1. http://example.com/?foo=bar&path=a/b/c.png/&bar=foo
  2. http://example.com/?foo=bar&path=a/b/c.png&bar=foo
  3. http://example.com/?foo=bar&path=a/b/c.png
  4. http://example.com/?foo=bar&path=a/b/c.png/
  5. 我正在寻找只匹配path=a/b/c.png的正则表达式(没有尾部斜杠的路径查询参数)。路径查询参数可以位于行的开头,中间或末尾。

    到目前为止,我有以下正则表达式path=[^#&]*

    您可以在此处查看:https://regex101.com/r/v4DqDx/1/

    感谢您的帮助!

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

1 个答案:

答案 0 :(得分:2)

代码

See regex in use here:对多线

使用Stack标志
m

如果内容不是多行,请改用:

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

说明

  • \bpath=[^#&]*\.\w+(?=[&#]|$) 断言位置为单词边界。字边界是与\b
  • 匹配的位置
  • (^\w|\w$|\W\w|\w\W)按字面意思匹配
  • path=匹配除[^#&\n]*以外的任何字符
  • #&\n匹配文字点
  • \.匹配一个或多个单词字符
  • \w+肯定前瞻,确保集(?=[&#]|$)中的字符匹配或者是行的结尾。