diff --git a/anki/tags.py b/anki/tags.py index 33d6422fd..79803a32b 100644 --- a/anki/tags.py +++ b/anki/tags.py @@ -103,7 +103,7 @@ class TagManager: res = self.col.db.all( "select id, tags from notes where id in %s and (%s)" % ( ids2str(ids), lim), - **dict([("_%d" % x, '%% %s %%' % y) + **dict([("_%d" % x, '%% %s %%' % y.replace('*', '%')) for x, y in enumerate(newTags)])) # update tags nids = [] @@ -140,13 +140,16 @@ class TagManager: return self.join(self.canonify(currentTags)) def remFromStr(self, deltags, tags): - "Delete tags if they don't exists." + "Delete tags if they exist." + def wildcard(pat, str): + pat = re.escape(pat).replace('\\*', '.*') + return re.search(pat, str, re.IGNORECASE) currentTags = self.split(tags) for tag in self.split(deltags): # find tags, ignoring case remove = [] for tx in currentTags: - if tag.lower() == tx.lower(): + if (tag.lower() == tx.lower()) or wildcard(tag, tx): remove.append(tx) # remove them for r in remove: