Python: 查找URL并添加查询字符串对
我正在尝试在一个Django的网页应用中给一些旧文本添加关联标识。这其实很简单。文本中有一些亚马逊的链接,我想在这些链接的末尾加上我的?tag=xxx
标识。
我写了一个模板过滤器,可以快速处理我的文本,但在写正则表达式的逻辑上有点卡住了。
t = text_from_template_engine
return re.sub(r'(https?://(?:www\.)?amazon\.co\.uk[\S]+)', r'\\\1?tag=xxx', t)
这个方法在基本情况下是有效的,但如果链接已经有查询字符串(很多亚马逊的链接默认就有),我就需要用一个&符号,而不是问号。
我想可能有个简单的方法可以检测到两个问号,并替换第二个。我对此持开放态度。
我真正想要的是一种正则替换的方法,可以把找到的字符串传递给另一个方法(在这个方法里我可以检测现有的问号),然后这个方法应该返回替换后的字符串。就像PHP中的preg_replace_callback
那样。有没有类似的东西呢?