code: def expose_transients_regex(self, regexes, *class_build_args, **class_build_kwargs):
          
          # Important : no effect if names is empty list. only return empty diff. functional style.
  
          # look through the new service names received by reconfigure, and add
          # those services which are not in the existing service args
          for tst_regex in [r for r in regexes if not r in self.transients_args]:
              self.transients_args.add(tst_regex)
              logging.info('[{name}] Exposing {desc} regex : {regex}'.format(name=__name__, desc=self.transients_desc, regex=tst_regex))
              # TODO : check here for bugs & add test : what if we add multiple regexes ? wont we miss some add_names ?
  
          # look through the current service args and delete those values which
          # will not be valid when the args are replaced with the new ones. run on
          # a copy so that we will remove from the original without crashing
          for tst_regex in [r for r in self.transients_args if not r in regexes]:
              logging.info('[{name}] Withholding {desc} regex : {regex}'.format(name=__name__, desc=self.transients_desc, regex=tst_regex))
              self.transients_args.remove(tst_regex)
  
          return self.transient_change_detect(
              *class_build_args,
              **class_build_kwargs
           )
docs: Exposes a list of transients regexes. resolved transients not matching the regexes will be removed.
          _expose_transients_regex -> _transient_change_detect -> _transient_change_diff -> _update_transients
          :param regexes: the list of regex to filter the transient to add.
                 Note: regexes = [] remove all registered regexes.
          :param regex_set: the list of regex already existing
          :return: the list of transients exposed