code: def preferred_forms_check(text, list, err, msg, ignore_case=True, offset=0,
                            max_errors=float("inf")):
      
      if ignore_case:
          flags = re.IGNORECASE
      else:
          flags = 0
  
      msg = " ".join(msg.split())
  
      errors = []
      regex = u"[\W^]{}[\W$]"
      for p in list:
          for r in p[1]:
              for m in re.finditer(regex.format(r), text, flags=flags):
                  txt = m.group(0).strip()
                  errors.append((
                      m.start() + 1 + offset,
                      m.end() + offset,
                      err,
                      msg.format(p[0], txt),
                      p[0]))
  
      errors = truncate_to_max(errors, max_errors)
  
      return errors
docs: Build a checker that suggests the preferred form.