避免最后的决定'&'在Python正则表达式中提取url param时

时间:2018-03-19 13:48:35

标签: python regex python-3.x

我一直在测试我的正则表达式。目标是从网站获取具体且命名的url参数以替换它。

现在我几乎已经实现了使用此正则表达式获取参数:

.website.com.+tag=(?P<tagvalue>.+&|.+\s)

当标签位于最后但这样可以获得&#39;标记&#39;的值。尾随&#39;&#39;像&#39;价值&amp;&#39;当它在中间时。

我想获取值但不捕获&符号。我试图从命名组中提取终止字符,如下所示:

.website.com.+tag=(?P<tagvalue>.+)&|\s

但这个正则表达式不起作用。它总是一直持续到行尾。我想要:

  1. 检查是否有&#39;&amp;&#39;性格。如果是,则在没有&#39;&amp;&#39;
  2. 的情况下捕获参数值
  3. 如果1不成立且 a&#39;&amp;&#39;字符,然后捕获值直到行结束(我认为这直到\ s,因为我正在处理文本和url进入它内部)。
  4. 您可以在此处使用一些测试文本测试正则表达式:

    https://regex101.com/r/mWetmI/1

2 个答案:

答案 0 :(得分:1)

您可以使用以下正则表达式完成此操作:

.website.com.+tag=(?P<tagvalue>[^&\s]+)

这将捕获标记的值,但不包括下一个&或空格

答案 1 :(得分:0)

尝试延迟重复:

.website.com.+tag=(?P<tagvalue>.+?)(:?\s|&)

https://regex101.com/r/mWetmI/2