You need to parse your string first to find out which Destiny substrings are inside a tag, and which aren't. I have done this below with re.split.
My use of re.split returns a list of substrings surrounding the regex pattern TAG:?{.*?}, and because I enclose the pattern in parentheses, the tags are included in the list as well. In this use of re.split, the non-tags will always have an even index, and the tags will always have an odd index. So I check if the index is even, and if so I replace Destiny with TAG:{Destiny,Destiny}.
import re
s = 'TAG:{Destiny2,the last Destiny game}, now I play TAG{Fortnite,Fortnite} is Destiny'
result = []
for i, substring in enumerate(re.split('(TAG:?{.*?})', s)):
if i % 2 == 0:
substring = substring.replace('Destiny', 'TAG:{Destiny,Destiny}')
result.append(substring)
result = ''.join(result)
print(result) # TAG:{Destiny2,the last Destiny game}, now I play TAG{Fortnite,Fortnite} is TAG:{Destiny,Destiny}
This will work as long as you don't have tags nested inside other tags.
I liked TAG:{Destiny2,the last Destiny game}, now I play TAG{Fortnite,Fortnite} is TAG:{Destiny:Destiny}? Describing your output is generally less helpful than actually providing it (when small enough to provide); please read about writing minimal reproducible examples.tag{}