docs: def split_fixed_pattern_with_file_name(path):
          """
          Split path into fixed, masked parts and filename
          :param path: e.g
  https://repo.example.com/artifactory/libs-cpp-release.snapshot/boost/1.60-pm/*.*.*/vc110/x86/win/boost.*.*.*.tar.gz
          :return:
              _path_fixed: https://repo.example.com/artifactory/libs-cpp-release.snapshot/boost/1.60-pm/
              _path_pattern: *.*.*/vc100/x86/win
              _file_name_pattern: boost.*.*.*.tar.gz
          """
          _first_pattern_pos = path.find('*')
          _path_separator_pos = path.rfind('/', 0, _first_pattern_pos)
          _path_fixed = path[:_path_separator_pos]
          _path_pattern = path[_path_separator_pos + 1:]
          _file_name_pattern_separator_pos = _path_pattern.rfind('/', 0)
          _file_name_pattern = _path_pattern[_file_name_pattern_separator_pos + 1:]
  
          if _path_pattern.find('*') == -1 or _file_name_pattern_separator_pos == -1:
              _path_pattern = ""
          else:
              _path_pattern = _path_pattern[:_file_name_pattern_separator_pos]
  
          return _path_fixed, _path_pattern, _file_name_pattern