【问题标题】:regex to separate HTML GET parameters正则表达式来分隔 HTML GET 参数
【发布时间】:2012-09-30 13:10:31
【问题描述】:

如何使用正则表达式分隔 URI 中的 GET 参数并提取某个参数?具体来说,我试图只获取 YouTube 观看 URI 的 v= 部分。我想出了youtube.com\/watch\?(\w+=[\w-]+&?)*(v=[\w-]+)&?*(\w+=[\w-]+&?)*,但这看起来非常重复。有没有更好(更短?)的方法来做到这一点?

【问题讨论】:

  • “页面参数”——我不知道它们叫什么。
  • 我认为它们被称为 POST 参数,或者可以合理地称为。
  • @MartinshShaiters 已修复。谢谢!
  • 其实url里面的参数就是GET参数。如果您提交表单,则生成的请求很可能包含POST 参数以及您的输入。
  • 官方名称是Query String,顺便说一下。您不必再次编辑 - 我相信每个人都会得到它:)

标签: regex string pcre string-matching


【解决方案1】:

我知道有很多类似的问题,但没有一个是 完全 我想要的。我正在寻找能够提取视频 ID 的东西——无论它是参数列表中的第一个、最后一个还是隐藏在其他参数列表中。我所见过的任何东西都没有这样的效果。

作为参考,我使用this web app进行测试,这组测试URI:

http://www.youtube.com/watch?v=XXXXXXXXXXX
http://www.youtube.com/watch?v=XXXXXXXXXXX&feature=results_video&playnext=1&list=XXXXXXXXXXXXXXXXXX
http://www.youtube.com/watch?feature=player_embedded&v=XXXXXXXXXXX#!
http://www.youtube.com/watch?annotation_id=annotation_xxxxxx&feature=iv&src_vid=XXXXXXXXXXX&v=XXXXXXXXXX

各位堆栈交换者,我提出以下正则表达式来解决这个问题:
youtube.com\/watch\?(\S*)v=([\w-]+)

【讨论】:

    【解决方案2】:

    简化的正则表达式:

    ^(?:http://www.)?youtube.[^/]+?/watch?(.?)(v=([^&]+))(. )$

    【讨论】:

      猜你喜欢
      • 2015-07-19
      • 2022-10-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多