docs: def build_alias_map(regex_map, tag_vocab):
      """
      Constructs explicit mapping. Order of items in regex map matters.
      Items at top are given preference.
  
      Example:
          >>> # DISABLE_DOCTEST
          >>> tags_list = [['t1', 't2'], [], ['t3'], ['t4', 't5']]
          >>> tag_vocab = ut.flat_unique(*tags_list)
          >>> regex_map = [('t[3-4]', 'A9'), ('t0', 'a0')]
          >>> unmapped = list(set(tag_vocab) - set(alias_map.keys()))
      """
      import utool as ut
      import re
      alias_map = ut.odict([])
      for pats, new_tag in reversed(regex_map):
          pats = ut.ensure_iterable(pats)
          for pat in pats:
              flags = [re.match(pat, t) for t in tag_vocab]
              for old_tag in ut.compress(tag_vocab, flags):
                  alias_map[old_tag] = new_tag
      identity_map = ut.take_column(regex_map, 1)
      for tag in ut.filter_Nones(identity_map):
          alias_map[tag] = tag
      return alias_map