code: def _build_abbreviation_regex(input_string):
          
          result=''
          for char in input_string:
              result += '[%s%s]?' % (char.upper(), char.lower())
          return '(%s)' % result
docs: builds a recursive regex based on an input string to find possible abbreviations more simply.
              e.g. = punct(u(a(t(i(on?)?)?)?)?)?
  
          :param input_string: str, input string
          :return: str, output regex