code: def get_discipline(cls, name, ignore='', min_length=3):
          
          for discipline in cls.CONFIG_DISCIPLINES:
              re_abbr = '({RECURSE}(?=[0-9]|[A-Z]|{SEPARATORS}))'.format(
                  RECURSE=cls._build_abbreviation_regex(discipline),
                  SEPARATORS=cls.REGEX_SEPARATORS)
              matches = cls._get_regex_search(name, re_abbr, ignore=ignore)
              if matches:
                  matches = [m for m in matches if
                             re.findall('([a-z]{%d,})' % min_length, m['match'], flags=re.IGNORECASE)]
                  if matches:
                      return matches[-1]
          return None
docs: Checks a string for a possible discipline string token, this assumes its on its own
              and is not part of or camel cased and combined with a word.  Returns first found match to reduce duplicates.
              We can be safe to assume the abbreviation for the discipline does not have camel casing within its own word.
  
          :param name: str, the string based object name
          :param ignore: str, specific ignore string for the search to avoid
          :param min_length: int, minimum length for possible abbreviations of disciplines. Lower = more wrong guesses.
          :return: dict, match dictionary