リストから指定された文字列に「a」タグを挿入するためのdjangoフィルターを作成しています。
これは私がこれまでに持っているものです:
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をキャプチャ/使用する方法に問題がありますか?