docs: def extract_by_prefix_surfix(text,
                               prefix,
                               surfix,
                               minlen=None,
                               maxlen=None,
                               include=False):
      """Extract the text in between a prefix and surfix. It use non-greedy match.
  
      :param text: text body
      :type text: str
  
      :param prefix: the prefix
      :type prefix: str
  
      :param surfix: the surfix
      :type surfix: str
  
      :param minlen: the min matched string length
      :type minlen: int
  
      :param maxlen: the max matched string length
      :type maxlen: int
  
      :param include: whether if include prefix and surfix
      :type include: bool
      """
      if minlen is None:
          minlen = 0
      if maxlen is None:
          maxlen = 2 ** 30
      pattern = r"""(?<=%s)[\s\S]{%s,%s}?(?=%s)""" % (
          prefix, minlen, maxlen, surfix)
      if include:
          return [prefix + s + surfix for s in re.findall(pattern, text)]
      else:
          return re.findall(pattern, text)