Note that searching multiple fields like tags does a search tag by tag. If a search does not match, the value is not touched.
If you want to search tags (which will probably work best), then you must get fancy with the search expression so that it always matches the entire tag. Try
This expression ensures that \1 either contains the complete tag or the empty string.
You can avoid the multiple-item processing by using "template" as the source field and "{tags}" as the template. In this case something like your expression would work, but you must not use the anchor to take care of the case where QT is not the first tag. In addition, it would probably be easier to remove the unwanted tags than to reconstruct the list of wanted tags.