我正在创建一个 django 过滤器,用于将“a”标签插入到列表中的给定字符串中。
这是我到目前为止所拥有的:
def tag_me(text):
tags = ['abc', 'def', ...]
tag_join = "|".join(tags)
regex = re.compile(r'(?=(.))(?:'+ tag_join + ')', flags=re.IGNORECASE)
return regex.sub(r'<a href="/tag/\1/">\1</a>', text)
例子:
tag_me('some text def')
回报:
'some text <a href="/tag/d/">d</a>'
预期的:
'some text <a href="/tag/def/">def</a>'
问题在于 regex.sub 匹配但仅返回第一个字符。我在最后一行捕获/使用 \1 的方式有问题吗?