code: def GetParsers(cls, parser_filter_expression=None):
      
      includes, excludes = cls._GetParserFilters(parser_filter_expression)
  
      for parser_name, parser_class in iter(cls._parser_classes.items()):
        # If there are no includes all parsers are included by default.
        if not includes and parser_name in excludes:
          continue
  
        if includes and parser_name not in includes:
          continue
  
        yield parser_name, parser_class
docs: Retrieves the registered parsers and plugins.
  
      Retrieves a dictionary of all registered parsers and associated plugins
      from a parser filter string. The filter string can contain direct names of
      parsers, presets or plugins. The filter string can also negate selection
      if prepended with an exclamation point, e.g.: "foo,!foo/bar" would include
      parser foo but not include plugin bar. A list of specific included and
      excluded plugins is also passed to each parser's class.
  
      The three types of entries in the filter string:
       * name of a parser: this would be the exact name of a single parser to
         include (or exclude), e.g. foo;
       * name of a preset, e.g. win7: the presets are defined in
         plaso/parsers/presets.py;
       * name of a plugin: if a plugin name is included the parent parser will be
         included in the list of registered parsers;
  
      Args:
        parser_filter_expression (Optional[str]): parser filter expression,
            where None represents all parsers and plugins.
  
      Yields:
        tuple: containing:
  
        * str: name of the parser:
        * type: parser class (subclass of BaseParser).