You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python正则表达式提取URL编码串中ProductId与Colour值拼接结果

问题原因分析

你原来使用的正则(?:ProductId%3D|Colour%3D)(.*)中,.*属于贪婪匹配规则,会匹配从匹配位置到字符串末尾的所有内容。所以首次匹配到ProductId%3D之后,剩下的整段967164%26Colour%3Dbright-royal都会被捕获,自然无法得到两个独立的参数值。

正确正则写法

你可以通过限制值的匹配范围来实现需求,推荐两种常用写法:

  • 写法1:限制值不含%字符(URL编码的特殊符号均以%开头,参数值本身不会包含未编码的%)
    正则:r'(?:ProductId%3D|Colour%3D)([^%]+)'
  • 写法2:用正向预查限定值的终止位置为参数分隔符%26或字符串结尾
    正则:r'(?:ProductId%3D|Colour%3D)(.*?)(?=%26|$)'

完整实现代码

import re

string = "ProductId%3D967164%26Colour%3Dbright-royal"
# 替换为上面任意一种正则均可
matches = re.findall(r'(?:ProductId%3D|Colour%3D)([^%]+)', string)
result = ''.join(matches)
print(result) # 输出:967164bright-royal

内容的提问来源于stack exchange,提问作者VDN

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 16:24:03