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

3
我有以下测试字符串:
  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/
我正在寻找一个正则表达式,只匹配path=a/b/c.png(没有尾随斜杠的路径查询参数)。路径查询参数可以在行的开头、中间或结尾。
到目前为止,我有以下正则表达式path=[^#&]*
你可以在这里看到它:https://regex101.com/r/v4DqDx/1/ 谢谢您的任何帮助!
编辑:为了更清楚,不应该匹配带有尾随斜杠的第1行和第4行中的查询参数。
1个回答

2

代码

在这里查看使用的正则表达式:使用 m 标志进行多行匹配。

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

如果内容不是多行,请使用以下方法:

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

解释

  • \b 断言位置为单词边界。单词边界是与 (^\w|\w$|\W\w|\w\W) 匹配的位置。
  • path= 字面匹配这个字符串。
  • [^#&\n]* 匹配除了 #&\n 之外的任意字符,任意次数。
  • \. 匹配字面的句点。
  • \w+ 匹配一个或多个单词字符。
  • (?=[&#]|$) 正向预查,确保后面要么是集合 &# 中的字符,要么是行尾。

@RomanPerekhrest 你有没有看过我的回答?我特别为此放了一个注释。我还包含了一个 regex101 的链接。这个方法百分之百有效。 - ctwheels
@RomanPerekhrest 编辑以防止进一步的混淆。如果您不介意在之后清理您的评论(以防止未来观众的混淆),那就更好了。 - ctwheels
谢谢你的帮助,但我正在寻找一个正则表达式,它不匹配第1行和第4行中的查询参数(忽略带有尾随斜杠的查询参数)。 - Koji
@Koji 或许在问题中应该明确指出,然后给我一点时间。 - ctwheels
@RomanPerekhrest,你缺少了m标志。为什么不直接点击我创建的regex101链接来查看它的使用情况,而不是试图让它自己工作呢? - ctwheels
非常感谢 @ctwheels! - Koji

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接