diff --git a/anki/tags.py b/anki/tags.py index 306f182de..f494c5ba5 100644 --- a/anki/tags.py +++ b/anki/tags.py @@ -102,7 +102,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 = [] @@ -139,13 +139,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): + return '*' in pat and re.search( + pat.replace('*', '.*'), 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: